add composite
Merge branch 'composite'