   # 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

  # lives, otherwise it will be destroyed.
  # Returns itself if it should be destroyed, otherwise returns an empty list.
  defp to_destroy(position) do
    count_living_neighbors(position)
    |> case do
      2 -> []
      3 -> []

  Start a new `cell` child process in the supervisor, passing `position` as its initial state.
  Will call `start_link` above.
  """
  @spec create({int, int}) :: on_start_child
  def create(position) do
    Supervisor.start_child(Cell.Supervisor, [position])
  end
