further refactoring
everything that could be refactored, has been refactored