Introduced some more common interfaces for different implementations.