Add support for per-type originating elements.

why have two naming patterns? (I'd expect `element1_1` above)