Project mostly done, only thing missing is most of the tests