first implementation for user type