public function make() {
        if (!$this->createTargetDirectory()) {
            throw new Garp_Gumball_Exception_CannotWriteTargetDirectory();
        }

        if (!$this->copySourceFilesToTargetDirectory()) {
            throw new Garp_Gumball_Exception_CannotCopySourceFiles();
        }

        // Create database dump of given environment
        if (!$this->createDataDump()) {
            throw new Garp_Gumball_Exception_DatadumpFailed();
        }

        // Create VERSION file
        $this->addVersionFile();

        // Create Under Construction index.html in public that's used when unpacking the gumball
        $this->addUnderConstructionLock();

        // Create config file which can be read @ restore time
        $this->addSettingsFile();

        // Zip target folder
        $this->createZipArchive();

        // Remove target folder
        $this->_removeTargetDirectory();
    }