Complete overhull of code structure. It is now more "Object-Orientated"