 		commenter = CodeCat.Commenters[ext]
 		if commenter? then regexpEscape(commenter) else ''
 	
-	newRelative = (source) ->
-		new @Relative(source)
+	mapRelative = (source) ->
+		stats =
+			try
+				statSync getRelativePath(@source, source)
+			catch
+				null
+		if stats?.isFile()
+			new @Relative(source)
+		# else if stats?.isDirectory()
+		else
+			try
+				require.resolve(source)
+			catch
+				console.error("Invalid file or node module \"#{source}\"")
+				null
 
 	joinFiles = (files, encoding, stream, options = {}, finishedFn) ->
 		{separator = EOL} = options

			Relative:
				value: class extends CodeCat
					constructor: (src) ->
						sourceDir = Path.dirname(source)
						relSrc = Path.join(sourceDir, src)
						super(relSrc, options)

	findConcats: (options, callback) ->

		ensureStream dest, defaultEncoding: @encoding, (stream, end) =>
			@findConcats (concats) =>
				error = null
				concats = mapConcats(concats, mapRelative, this) if recursive
				paths = [concats.prepend..., @source, concats.append...]
				joinFiles paths, @encoding, stream, options, -> callback?(error)

