Base line refactored ready for testing
Added Tests for existing requirements. Moved Names out to const
Added boundary tests and validation exceptions