Compound Pattern -> Abstract factory