added user validation and required fields