Initial OO-refactor