final function apply($settings = null, $throwException = false)
    {
        if ($settings !== null)
            $this->import($settings);

        # initialize specific environment
        $this->initApply();

        # do apply by current options value
        foreach($this as $prop => $value) {
            $method = 'do'.StdString::of($prop)->camelCase();
            if (! method_exists($this, $method) && $throwException)
                throw new \Exception(sprintf(
                    'Unknown instruction (%s).'
                    , $method
                ));
                
            
            $this->{$method}($value);
        }
    }