We discuss the problem of creating a reminder generation system that successfully alerts a user to daily tasks while adapting the features of its reminders to the user's reminding preferences. There are many example applications in which reminding is useful; we motivate the discussion by focusing on two such applications. The first is an office environment in which users require assistance in managing their time. Here the reminder system may be embedded in a computational agent, e.g. CALO, that assists its user in performing a set of office tasks. The second environment in which an intelligent reminding tool may be of particular use is as a cognitive orthotic for the elderly and cognitively impaired. One system that has been tested in such an environment is Autominder. There are a number of enhancements to these basic reminding tools that will lead to more acceptable, robust systems. Enhancements include (1) one or more justifications for each reminder, (2) the ability to modify the granularity of a reminder, (3) choosing the best audio or visual signal for reminders, and (4) learning a user's preferences for each of these reminding features and adapting the system to meet these preferences to the extent possible.