refactored user fully