     ], callback
 
   load: (callback) ->
-    ### Convenience method to load contents, templates and locals. ###
-    async.parallel
-      contents: (callback) => @getContents callback
-      templates: (callback) => @getTemplates callback
-      locals: (callback) => @getLocals callback
-    , callback
+    ### Convenience method to load plugins, contents, templates and locals. ###
+    async.waterfall [
+      (callback) => @loadPlugins callback
+      (callback) =>
+        async.parallel
+          contents: (callback) => @getContents callback
+          templates: (callback) => @getTemplates callback
+          locals: (callback) => @getLocals callback
+        , callback
+    ], callback
 
   preview: (options, callback) ->
     ### Start the preview server. Calls *callback* when server is up and


  getLocals: (callback) ->
    ### Resolve locals. ###

    resolveModule = (moduleName) =>
      if moduleName[0] is '.'
        @resolvePath moduleName
      else
        moduleName

    resolveLocals = (callback) =>
      ### Load locals json if neccessary. ###

  resolveContentsPath: (pathname) ->
    ### Resolve *pathname* in contents directory, returns an absolute path. ###
    path.resolve @contentsPath, pathname or ''

  resolveModulePath: (moduleName) ->
    ### Resolve path to *moduleName* if needed. ###
    if moduleName[0] is '.'
      @resolvePath moduleName
    else
      moduleName

  relativePath: (pathname) ->
    ### Resolve path relative to working directory. ###
