get things working in a much-more object-oriented style
Continue refactoring; separate file for utils, etc.
OOP version that seems to be working