Lots of mucking around with shared_examples
Tests pass.
minor changes