composite, factory, visitor patterns