mild refactoring
violent refactoring