added the ABCs for visitor pattern