       args: %{x: integer, y: integer, z: integer}
       body: []
   """
-  @type x :: integer
-  @type y :: integer
-  @type z :: integer
   @type coord_args :: %{x: x, y: y, z: z}
   @type coordinate_ast :: %Ast{kind: String.t, args: coord_args, body: []}
   @spec coordinate(coord_args, []) :: coordinate_ast

    home(%{axis: "x"}, [])
  end

  def home(%{axis: "z"}, []) do
    [cur_x, cur_y, _] = Farmbot.BotState.get_current_pos
    move_absolute(%{ speed: 100,
                     offset: %{ kind: "coordinate",
                                args: %{ x: 0,
                                         y: 0,
                                         z: 0 } },
                     location: %{ kind: "coordinate",
                                  args: %{ x: cur_x,
                                           y: cur_y,
                                           z: 0 } } }, [])
  end

  def home(%{axis: "y"}, []) do
    [cur_x, _, cur_z] = Farmbot.BotState.get_current_pos
    move_absolute(%{ speed: 100,
                     offset: %{ kind: "coordinate",
                                args: %{ x: 0,
                                         y: 0,
                                         z: 0 } },
                     location: %{ kind: "coordinate",
                                  args: %{ x: cur_x,
                                           y: 0,
                                           z: cur_z } } }, [])
  end

  def home(%{axis: "x"}, []) do
    [_, cur_y, cur_z] = Farmbot.BotState.get_current_pos
    move_absolute(%{ speed: 100,
                     offset: %{ kind: "coordinate",
                                args: %{ x: 0,
                                         y: 0,
                                         z: 0 } },
                     location: %{ kind: "coordinate",
                                  args: %{ x: 0,
                                           y: cur_y,
                                           z: cur_x } } }, [])
  end

  @doc """

      args: %{axis: "x" | "y" | "z" | "all"},
      body: []
  """
  # HACK
  # F11 F12 F13 and G28 are all cureently broken.
  @type axis :: String.t # "x" | "y" | "z" | "all"
  @spec home(%{axis: axis}, []) :: no_return
  def home(%{axis: "all"}, []) do
