extended with recursors