More work done.  Visitor pattern Included