add 'generations' mechanism