public function copy(Object $obj, $newName, $container = NULL) {
    //$sourceUrl = $obj->url(); // This doesn't work with Object; only with RemoteObject.
    $sourceUrl = self::objectUrl($this->url, $obj->name());

    if (empty($newName)) {
      throw new \HPCloud\Exception("An object name is required to copy the object.");
    }

    // Figure out what container we store in.
    if (empty($container)) {
      $container = $this->name;
    }
    $container = rawurlencode($container);
    $destUrl = self::objectUrl('/' . $container, $newName);

    $headers = array(
      'X-Auth-Token' => $this->token,
      'Destination' => $destUrl,
    );

    $client = \HPCloud\Transport::instance();
    $response = $client->doRequest($sourceUrl, 'COPY', $headers);

    if ($response->status() != 201) {
      throw new \HPCloud\Exception("An unknown condition occurred during copy. " . $response->status());
    }
    return TRUE;
  }