Work on requirements
Unit tests added
Formatting cleanup