Credited Mark for helping me with recursive generators.