     get_coord(coord[:args], axis)
   end
 
+  # EXHIBIT A
   defp to_number(axis, %{resource_id: id, resource_type: t}) do
+    IO.puts("EXHIBIT A: You might be able to merge these two methods together.")
     point = FarmbotCeleryScript.SysCalls.point(t, id)
     get_coord(point, axis)
+  end
+
+  # EXHIBIT B
+  defp to_number(axis, %{args: %{pointer_id: id, pointer_type: t}}) do
+    IO.puts("EXHIBIT B: You might be able to merge these two methods together.")
+    to_number(axis, %{resource_id: id, resource_type: t})
   end
 
   defp to_number(_axis, %{

  end

  defp move_abs(%{x: x, y: y, z: z, speed_x: sx, speed_y: sy, speed_z: sz} = k) do
    SysCalls.log("Moving to (#{x},#{y},#{z}) @ speed (#{sx},#{sy},#{sz})")
    SysCalls.move_absolute(x, y, z, sx, sy, sz)
    k
  end

  defp move_abs(%{
    "speed_x" => sx,
    "speed_y" => sy,
    "speed_z" => sz,
    "x" => x,
    "y" => y,
    "z" => z }) do
    move_abs(%{ speed_x: sx, speed_y: sy, speed_z: sz, x: x, y: y, z: z })
  end

  def x, do: SysCalls.get_current_x()
  def y, do: SysCalls.get_current_y()
  def z, do: SysCalls.get_current_z()
end

  def do_perform_movement(%{"safe_z" => false} = n), do: move_abs(n)

  def retract_z(needs) do
    %{x: cx(), y: cy(), z: @safe_height} |> Map.merge(needs) |> move_abs()
  end

  def move_xy(needs) do
    %{z: cz()} |> Map.merge(needs) |> move_abs()
  end

  def extend_z(needs) do
    %{x: cx(), y: cy()} |> Map.merge(needs) |> move_abs()
  end

  def calculate_movement_needs(body) do
