concrete abstraction