improved forgot logic