public function createProjectSkel($projectName)
    {
        $rootDir = $this->config->get('phpalchemy.root_dir');
        $defAppIniFile = $rootDir . '/config/defaults.application.ini';

        if (! self::validateProjectName($projectName)) {
            throw new \Exception(
                "Error: Invalid project name!\nProject name can be contains only alphanumeric characteres."
            );
        }

        $newProjectDir = getcwd() . '/' . $projectName;

        if (! file_exists($defAppIniFile)) {
            throw new \Exception("FATAL ERROR: File: 'defaults.application.ini' is missing!");
        }

        $this->projectDir = $newProjectDir;
        $this->config->set('app.root_dir', $newProjectDir);

        // create main project dir
        self::createDir($newProjectDir);

        $this->config->load($this->homeDir . DS . 'config' . DS . 'defaults.application.ini');
        $this->config->load($this->projectDir . DS . 'application.ini');

        $appInitConf = $this->config->all();
        //print_r($appInitConf); die;

        // creating directories skel.
        foreach ($appInitConf as $key => $targetDir) {
            // process only directory path ini. conf.
            //if (strpos($key, '_dir') !== false) {
            if (preg_match('/^app\.[\w]+_dir/', $key, $m) && $key !== 'app.root_dir') {
                //echo $key.' -> '.$targetDir . PHP_EOL;
                self::createDir($targetDir);
            }
        }

        // defining vars
        $data = array();
        $data['appName'] = $projectName;
        $data['namespace'] = self::camelize($projectName);
        $data['framework_dir'] = $this->homeDir;

        // read project templates & others files
        $projectFiles = glob($rootDir . '/templates/project/*');

        foreach ($projectFiles as $file) {
            $targetFile = $this->projectDir.'/'.str_replace('|', DIRECTORY_SEPARATOR, basename($file));
            self::createDir(pathinfo($targetFile, PATHINFO_DIRNAME));

            if (substr($file, -4) === '.tpl') {
                $contents = file_get_contents($file);
                $targetFile = str_replace('.tpl', '', $targetFile);

                // replace data on template
                foreach ($data as $key => $value) {
                    $contents = str_replace('{'.$key.'}', $value, $contents);
                }

                // write the composed template to target file
                file_put_contents($targetFile, $contents);
            } else {
                // just we need to copy file
                copy($file, $targetFile);
            }
        }

        return $projectName;
    }