added regeneration method