refactor controllers and views
add user registration feature