   end
 
   defp get_coord(%{x: _, y: _, z: _} = coord, axis) when is_atom(axis) do
-    get_coord(coord, axis)
+    Map.fetch!(coord, axis)
   end
 
   defp get_coord(%{x: _, y: _, z: _} = coord, axis) do
-    get_coord(coord, String.to_atom(axis))
+    Map.fetch!(coord, String.to_atom(axis))
   end
 
   defp move_abs(%{x: x, y: y, z: z, speed_x: sx, speed_y: sy, speed_z: sz} = k) do

    get_coord(%{x: x(), y: y(), z: z()}, axis)
  end

  # ???
  defp to_number(axis, %{x: _, y: _, z: _} = coord) do
    get_coord(coord, axis)
  end

    ]
  end

  defp to_number(_axis, %{args: %{number: num}, kind: :numeric}) do
    num
  end

  defp to_number(_axis, %{args: %{lua: lua}, kind: :lua}) do
    result = SysCalls.raw_lua_eval(lua)

    case result do
      {:ok, [data]} ->
        if is_number(data) do
          data
        else
