Rebuilt whole program architecture, now more OOP style :)