Template methods to test implementations
Especially important if you expect multiple independent implementations