add expiring generate method