public function set_metadata($key, $value = null, $rcpt = null)
	{
		is_array($key) or $key = array($key => $value);

		if (is_null($rcpt))
		{
			$this->metadata = \Arr::merge($this->metadata, $key);
		}
		else
		{
			$metadata = \Arr::get($this->rcpt_metadata, $rcpt, array());
			$this->rcpt_metadata[$rcpt] = \Arr::merge($metadata, $key);
		}

		return $this;
	}