refactoring. @user