add doc, refactor calendarItem