add composite and decorator patterns