Still not fully working, but it's on its way

* Object oriented the whole thing