     Process.send_after(self(), :tick, delay(state))
   end
 
-  defp next_turn(state) do
-    reducer = state.reducer
-    world = state.world
-    world = reducer.(world)
-    %{state| world: world}
+  defp apply_reducer(state) do
+    %{state| world: state.reducer.(state.world)}
   end
 
   # check if the game is over


  #
  def handle_info(:tick, {:cont, state}) do
    state = next_turn(state)
    if done?(state) do
      {:noreply, {:halted, state}}
    else

  end

  def handle_call(:next, _from, {_, state}) do
    state = apply_reducer(state)
    {:reply, :ok, {:suspend, state}}
  end

