abstraction and grouping