working abstraction