fixed calendar listener abstraction