public function addParam($key, $value, $encode = false) {

		if(false === is_string($key)) {
            return trigger_error(sprintf('Argument 1 passed to %s() must be of the type string, "%s" given', __METHOD__, gettype($key)), E_USER_ERROR);
        }

        if(false === is_string($value) && false === is_array($value)) {
            return trigger_error(sprintf('Argument 2 passed to %s() must be of the type string or array, "%s" given', __METHOD__, gettype($value)), E_USER_ERROR);
        }

        if(false === is_bool($encode)) {
			return trigger_error(sprintf('Argument 3 passed to %s() must be of the type boolean, "%s" given', __METHOD__, gettype($encode)), E_USER_ERROR);
		}

		$this -> params[] = (object) ['key' => $key, 'value' => $value, 'encode' => $encode];

		return $this;
	}