public function setSpecialType(&$value, $type) {

        $type = strtolower($type);

        if ( empty($value) || !in_array($type, self::$supported_special_types) ) {
            throw new InvalidArgumentException("Invalid value type");
        }

        $this->special_types[$value] = $type;

        return $this;

    }