for readability, split out these operations into partial classes
introduced interface for that testability thing
Merge pull request #4 from shiftkey/get-some-structure-in

get some structure in