Second Version with Validations