extracted userService to its own file