Add the basis for the Visitor pattern