first thoughts about the class structure for this project. not finished yet