Refactor for more OO