added some methods, changed a few things to private, and changed the direction of the interface arrows because they were for sure backwards.