switch to replaying events instead of restoring state at each event. This simplifies things a lot