More refactoring into seperate classes