This is a massive task, it requires a big rethink of parsing, node processing, and probably output as well.