composite and decorator add