Bunch of new things, I did a lot of OOP

I went ahead and made the code a lot more readable.
New designs.
dsadas