Commit working program

Update with working code and unit tests