Updated, more OOP, still lots to learn