Imagine a simple action call a(f()) where f() is some fluent. This is implicitly translated into { start(a(f())); end(a(f())); }. Now if some exogenous event changes the value of f() before end(a(f())) becomes possible, end(a(f())) suddenly refers to a different action call which has never been started and therefore never ends :-(