refactoring, adding more basic classes