generel refactoring