Most of the architecture is laid, just need to add some of the methods and the fake database access