remove tracing bits, output is hard to understand for any patterns
which aren't tiny, the approach in impl.clj better for reasoning.