refactored to user controller class and interface