format checks the type before encoding
evaluates type equality when transitioning