refactoring much