add listener and visitor method for cal