passes all acceptance crteria, added validations and uniqueness to attributes