refactored user.el