A project to implement the composite and visitor patterns