 		[options, callback] = discernOptions(options, callback)
 		{recursive = true} = options
 		ensureStream dest, defaultEncoding: @encoding, (stream, end) =>
-			@findConcats relative: true, (concats) =>
+			@findConcats (concats) =>
 				error = null
-				concats = mapConcats(concats, (c) => new CodeCat(c, @options)) if recursive
+				concats = mapConcats(concats, (c) => new @Relative(c)) if recursive
 				paths = [concats.prepend..., @source, concats.append...]
 				joinFiles paths, @encoding, stream, options, -> callback?(error)
-
-	getRelativePath: (file) ->
-		sourceDir = Path.dirname(@source)
-		Path.join(sourceDir, file)
 			
 	@Commenters =
 		'': '//'

			else if match = line.match(@appendRegexp)?[2]
				append.push(match)

		lineReader.on 'close', =>
			concats = mapConcats(concats, @getRelativePath, this) if relative
			callback?(concats)

	concat: (options, callback) ->
		[options, callback] = discernOptions(options, callback)

		Object.defineProperties this,
			source:
				value: source
			prefix:
				value: prefix
			encoding:
