add better way to undo stack for tracking current expression.
basic hierarchical parser
cleanup some