12/27 head first : composite pattern