user refactoring