introduce Composite interface