private function open() {
        if (file_exists($this->target) && !unlink($this->target))
            throw new ZipExporterException("could not remove existing zip archive at \"$this->target\"");
        
        $zip = new \ZipArchive();
        if (!$zip->open($this->target, \ZipArchive::CREATE))
            throw new ZipExporterException("could not create zip archive at \"$this->target\"");
        return $zip;
    }