the string splitting in transitionTo is wasteful and for large payloads ...

...can be surprisingly costly. As they never actually change, we should simply cache and forget about them.

some numbers for (1000 model pushPayload) 
18.3ms -> 3.2ms for transitionTo