Adding validation

- Added the validation structure
- Fixed the either issues
- 100% coverage!