public function set_options($value, $label = null, $replace_options = false)
	{
		if ( ! is_array($value))
		{
			\Arr::set($this->options, $value, $label);
			return $this;
		}

		$merge = function(&$array, $new, $merge)
		{
			foreach ($new as $k => $v)
			{
				if (isset($array[$k]) and is_array($array[$k]) and is_array($v))
				{
					$merge($array[$k], $v);
				}
				else
				{
					$array[$k] = $v;
				}
			}
		};

		($replace_options or empty($this->options)) ? $this->options = $value : $merge($this->options, $value, $merge);

		return $this;
	}