Implemented the rest of the interface and objects. Need to test