Beginning object oriented refactor.