public function run($args)
    {
        $this->setup($args);

        Index::info('Downloading files..');

        $this('curl')
            ->setUrl('https://github.com/Eve-PHP/Shade/archive/master.zip')
            ->setFile($this->file)
            ->setFollowLocation(true)
            ->setSslVerifyPeer(false)
            ->send();

        fclose($this->file);

        Index::info('Extracting files..');

        try {
            $zip = new \ZipArchive();
            $resource = $zip->open($this->cwd . '/tmp/framework.zip');

            if(!$resource) {
                throw new \Exception('Cannot extract data. Aborting.');
            }

            $zip->extractTo($this->cwd.'/tmp');
            $zip->close();

            Index::info('Copying files..');

            $root = $this->cwd.'/tmp/Shade-master';
            $files = $this('folder', $root)->getFiles(null, true);

            foreach($files as $file) {
                $destination = str_replace('/tmp/Shade-master', '', $file->get());
                $folder = $this('file', $destination)->getFolder();

                if(!is_dir($folder)) {
                    mkdir($folder, 0777, true);
                }

                copy($file->get(), $destination);
            }
        } catch(\Exception $e) {
            Index::error($e->getMessage(), false);
        }

        Index::info('Cleaning up ..');

        $tmp = $this('folder', $this->cwd . '/tmp');

        $files = $tmp->getFiles(null, true);
        $folders = $tmp->getFolders(null, true);
        $folders = array_reverse($folders);

        foreach($files as $file) {
            $file->remove();
        }

        foreach($folders as $folder) {
            $folder->remove();
        }

        $tmp->remove();

        Index::info('Copying settings..');
        $this('file', $this->cwd.'/settings/databases.php')->setData($this->databases);
        copy($this->cwd.'/settings/sample.config.php', $this->cwd.'/settings/config.php');
        copy($this->cwd.'/settings/sample.test.php', $this->cwd.'/settings/test.php');

        Index::info('Creating database..');

        $this->install();

        Index::success('Database created.');

        Index::warning('Please set the configs in the settings folder');
        Index::system('Control Login is: admin@openovate.com / admin');
        Index::success('Framework installation complete!');

        die(0);
    }