Introducing implementation and tests