WIP: split code types.

I need to refactor this stuff anyway, once I do Inline and Block elements should be treated completely separately. So the `Union` is fine as a stop gap