   # Get the neighboring positions of `position`, filter out the dead neighbors,
   # then get the cell positions which should be created and return them.
   defp to_create(position) do
-    get_neighboring_positions(position)
+    position
+    |> get_neighboring_positions
     |> get_dead_neighbors
     |> get_positions_to_create
   end

  @doc """
  Start a cell and register it in the Registry, using the `position` as its name.
  """
  def start_link(position) do
    via_tuple = {:via, Registry, {Cell.Registry, position}}
    GenServer.start_link(__MODULE__, position, name: via_tuple)


  # Get the neighbors of `position`, filter out living neighbors, and return the count.
  defp count_living_neighbors(position) do
    position
    |> get_neighboring_positions
    |> get_living_neighbors
    |> length
  end
