Refactored classes - split per functionality