general refactorings