Factor dispatch code into observer method

Retain last seen value, precompute dispatch method.