Added more classes and implemented parts of the functionality