user type refactoring