more OO and already kind of on the right path