refactoring etc