composite and decorator