 		Object.defineProperties this,
 			source:
 				value: source
+			options:
+				value: options
 			prefix:
 				value: prefix
 			commenter:

		commenter = CodeCat.Commenters[ext]
		if commenter? then regexpEscape(commenter) else ''

	joinFiles = (paths, encoding, separator, stream) ->
		paths.forEach (path, notFirst) ->
			output = (notFirst and separator) or ''
			output += readFileSync(path, encoding: encoding)
			stream.write(output)

	ensureStream = (dest, options, fn) ->
		[options, fn] = discernOptions(options, fn)
		if isString(dest)
			stream = createWriteStream(dest, options)
			stream.once('open', -> fn(stream))
		else
			fn(dest)

	mapConcats = (concats, map, thisArg) ->
		mapped = {}

		@concatTo stream, options, (error) -> callback?(concatted)

	concatTo: (dest, options, callback) ->
		[options, callback] = discernOptions(options, callback)
		ensureStream dest, defaultEncoding: @encoding, (stream, end) =>
			concatToStream.call(this, stream, options, -> end(callback))

	getRelativePath: (file) ->
		sourceDir = Path.dirname(@source)
