     setOptions: (opt) ->
       extend(options, opt)
 
+    setType: (type='zip') ->
+      type = type
+
     setOutput: (path) ->
       if out?
         out.end()
       out = fs.createWriteStream path
 
     add: (path, callback) ->
+      if not initialized
+        initialize()
+
       glob path, (err, files) ->
         callback err if err
         files.forEach (file, i) ->

      return fileList

    compress: (callback) ->
      zip.pipe out

      async.parallel fileStack, (err) ->

  out         = undefined
  fileList    = []
  fileStack   = []
  initialize = ->
    zip = archiver type, options
    initialized = true

  return {
    getStream: ->
