public function get($key, $default = null)
    {
        if (isset($this->data[$key])) {
            $value = $this->data[$key];
        } else {
            if (isset($default)) {
                $this->setDefault($key, $default);
            } elseif (isset($this->defaultData[$key])) {
                $default = $this->defaultData[$key];
            }
            return $default;
        }
        if (isset($default)) {
            if (gettype($default) !== gettype($value)) {
                $this->setDefault($key, $default);
                return $default;
            }
        }
        return $value;
    }