user model with input checks added