create composit pattern