Add recurring events support