finished user model functionality with corresponding views