public function imposeDefault($settings = [])
    {
        foreach ($settings as $name => $value) {
            $name = strtolower(str_replace('-', '', $name));
            if (!isset($this->{$name})) {
                if (is_scalar($value)) {
                    $this->{$name} = new Generic($value);
                } else {
                    $this->{$name} = $value;
                }
            } elseif ($value instanceof Section) {
                $value->imposeDefault($value);
            } else {
                $current = $this->{$name};
                if (!is_object($value)) {
                    $this->{$name} = new Generic($value);
                } else {
                    $this->{$name} = $value;
                }
                $this->{$name}->setHumanValue($current->value);
                $this->{$name}->source = $current->source;
                $this->{$name}->revision = $current->revision;
            }
        }
    }