abstraction layer data types