Without thinking too hard about it, most everything you asked about can be done with current versions of Hijack, using PopUps (which can also be nested), the "shift" operator, and separate Left/Right definitions where wanted.

Cheers