updated user with better helper methods and testing