public function getParameterListAsObject($name, $delimiter = ";")
    {

        $parameter = $this->getValidParameterOfType($name, "string");
        $list = preg_split('/\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\s*/', $parameter, null,
            PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
        //if emptyparameter return throw an exception because they'd be expecting an object;


        $parameters = [];
        $values = [];

        foreach ($list as $itemValue) {
            //if items have qualities associated with them we shall sort the parameter array by qualities;
            $bits = preg_split('/\s*(?:;*("[^"]+");*|;*(\'[^\']+\');*|;+)\s*/', $itemValue, 0,
                PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
            $value = array_shift($bits);
            $attributes = [];

            $lastNullAttribute = null;
            foreach ($bits as $bit) {
                if (($start = substr($bit, 0, 1)) === ($end = substr($bit, -1))
                    && ($start === '"'
                        || $start === '\'')
                ) {
                    $attributes[$lastNullAttribute] = substr($bit, 1, -1);
                } elseif ('=' === $end) {
                    $lastNullAttribute = $bit = substr($bit, 0, -1);
                    $attributes[$bit] = null;
                } else {
                    $parts = explode('=', $bit);
                    $attributes[$parts[0]] = isset($parts[1]) && strlen($parts[1]) > 0 ? $parts[1] : '';
                }
            }

            $parameters[($start = substr($value, 0, 1)) === ($end = substr($value, -1)) && ($start === '"' || $start === '\'')
                ? substr($value, 1, -1) : $value] = $attributes;

        }

        return new Factory($name, $parameters, static::$sanitizer, static::$validator, false);
    }