refactor User