       return fileList
 
     compress: (callback) ->
+      if not initialized
+        initialize()
+
       zip.pipe out
 
       async.parallel fileStack, (err) ->

    setOptions: (opt) ->
      extend(options, opt)

    setOutput: (path) ->
      if out?
        out.end()
      out = fs.createWriteStream path

    add: (path, callback) ->
      glob path, (err, files) ->
        callback err if err
        files.forEach (file, i) ->

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

  return {
    getStream: ->
