refactoring
test refactoring
further refactoring
added separate coupling function and tests passing
added shared examples to test files
added readme