Work in progress towards abstracting the datatype implementations.