Reorg a bit, refactor character() to use the natural generator