Complete rewrite. Make syntax and internals match through2 and terminus