abstraction layer

way of hiding details of a computing subsystem, allowing separation of concerns and interoperability