refactoring, types