Cleaning out all the main method crap into a smoke test which will go away eventually
Lots of restructure, minor attempt to make the binary predicates at least work
A few ugly checks via Obeject methods that probably could be done using guardWithTest
formtting