moved calendar logic to separate service