Implementations and tests.
Dont know why missed the last commit.