Designing abstraction