   for fullPath in options.args
     compilePath fullPath, options
 
+  return
+
 # compilePath
 # ------------------------------------------------------------------------------
 # Compile any file or directory path
 
-compilePath = (fullPath, options = {}) ->
+compilePath = (fullPath, options = {}, cb = ->) ->
   if isDirectory fullPath
-    return compileDir fullPath, options
+    return compileDir fullPath, options, cb
   includeDir = path.dirname fullPath
-  compileFile fullPath, includeDir, options
+  compileFile fullPath, includeDir, options, cb
+  return
 
 # compileDir
 # ------------------------------------------------------------------------------
 
-compileDir = (dirPath, options = {}) ->
+compileDir = (dirPath, options = {}, cb = ->) ->
   # Handle recursion and gather files to watch and compile
   lsWatch dirPath, options, (err, files, dirs) ->
 


# compileFile
# ------------------------------------------------------------------------------
compileFile = (filePath, includeDir, options = {}) ->
  # Time this method
  startTime = process.hrtime()


      for d in dirs
        watchDir d, dirPath, options

    # Call cb when it has been called length times
    _cb = _.after files.length, cb

    for f in files

      # Compile and watch all pages
      if isOJPage f
        compileFile f, dirPath, options, _cb

      # Watch files that aren't pages
      else if options.watch
        watchFile f, dirPath, options
        _cb()
    return
  return

# nodeModulePaths: Determine node_module paths from a given path
# Implementation is from node.js' Module._nodeModulePaths
