Refactored more OO