   """
   defcallback dequeue_for(client_id :: String.t) :: [map]
 
+  @doc """
+  Called by the Pixie supervisor to start the selected backend.
+  """
   def start_link name, options do
     module = Module.concat [:Pixie, :Backend, name]
     apply(module, :start_link, [options])

  # FIXME
  # This is all really horrible, but I can't think of a better way of doing it
  # at the moment.  If you have a better idea then please, send me a PR.
  def generate_namespace, do: generate_namespace(@default_id_length)
  def generate_namespace(length), do: apply_to_backend(:generate_namespace, [length])
  def release_namespace(namespace), do: apply_to_backend(:release_namespace, [namespace])
  def create_client, do: apply_to_backend(:create_client, [])
  def get_client(client_id), do: apply_to_backend(:get_client, [client_id])
  def destroy_client(client_id), do: apply_to_backend(:destroy_client, [client_id])
  def destroy_client(client_id, reason), do: apply_to_backend(:destroy_client, [client_id, reason])
  def subscribe(client_id, channel_name), do: apply_to_backend(:subscribe, [client_id, channel_name])
  def unsubscribe(client_id, channel_name), do: apply_to_backend(:unsubscribe, [client_id, channel_name])
  def subscribers_of(channel_name), do: apply_to_backend(:subscribers_of, [channel_name])
  def subscribed_to(client_id), do: apply_to_backend(:subscribed_to, [client_id])
  def client_subscribed?(client_id, channel_name), do: apply_to_backend(:client_subscribed?, [client_id, channel_name])
  def queue_for(client_id, messages), do: apply_to_backend(:queue_for, [client_id, messages])
  def dequeue_for(client_id), do: apply_to_backend(:dequeue_for, [client_id])

  @doc """

  @doc """
  Create a new `Pixie.Client` process.
  """
  defcallback create_client :: {client_id :: String.t, pid}

  @doc """
  Retrieve the process of a client by it's ID.
