Please not that this is still a work in progress(WIP)