A little better inline documentation
Switched to OOP