Add implementation field
Move all tests into shared examples so that different implementations can be tested
Add implementation tests into pending