 
   @spec execute(pid, Genomu.key, Genomu.command, Keyword.t) :: term
   defcall execute(key, cmd, options), state: State[] = state do
+    state = ensure_snapshot(state)
+
     clock = next_clock(state.clock, cmd)
     cell = {key, state.lookup(key)}
     revision = ITC.encode_binary(clock)

    state.clock(clock).memoize(key)
  end

end
                snapshot: nil | :ets.tid, log: [Genomu.Transaction.entry],
                children: nil | :ets.tid

    @spec memoize(Genomu.key, t) :: t
    def memoize(key, __MODULE__[snapshot: snapshot, clock: clock, log: log] = state) do
      :ets.insert(snapshot, {key, clock})
