customer abstraction