refactored user models