Decided to go with visitor pattern.  Got it started