Major Redesign

Redesigned entire app to better follow object oriented design
principles. Also added more functions and fixed many bugs.