Implementing classes and restructuring project