finished question 2.1
refactored to VISITOR for fun. It's AMAZING how much VISITOR can keep collection type interfaces from blowing up in complexity!