refactor user service and fix everything that it broke