refactor user controller api