implements spaced repetition