Change things to use a Visitor pattern. Added formatting.
Get rid of pre-visitor code. Fill in more visitor methods.