How to design the classes correctly for this PySide project? I need some insight about classes design