pattern composite custom