Base implementation.
Implemented unit tests.