Need a "write entry name;" feature. Conditional action blocks need to be explicitly ordered in the same way that actions are ordered. Possibly bring back the old semantics of > in a new operator, or allow it to be defined somehow. When priorities are embedded without a name, the name of the current machine is used. Perhaps a unique name for each instance of the current machine should be used instead. This idea could work well if applied to user-defined embeddings. User defined embeddings <-name(a1,a2,...). User defined operators expr1 expr2. Doesn't make make sense for [] to be the lambda (zero-length) machine. This should be the empty set (the empty machine). But then would it be invalid in a regular expression? Expressions of the form: expr1 <: expr2 . expr3 sometimes don't behave as expected. If expr2 contains the empty string then it's possible for the machine to escape to expr3. This is somewhat unexpected. The empty string does count as moving through the right machine so there should not be an exception for this case. Using the stronger implementation: ( expr1 $1 %0 . expr2 ) will solve the problem. Also, there is potential for nondeterminism to persist via the empty string with the :> and :>> operators. Should also guard against this using leaving priorities. The |> guarded operator and the <| guarded operator need to be added. The fixed size stack is a problem for manual recursion of unlimited depth. An option to turn off the removal of duplicate actions might be useful for analyzing unintentional nondeterminism. Might be a good idea to add in some protection against using up all of a system's memory. This protection could then be removed by people when someone is sure they want to use a lot of memory. fbreak should advance the current char. Depreciate fbreak and add fctl_break; fctl_return ; fctl_goto