     @workDir = path.resolve @workDir
     @contentsPath = @resolvePath @config.contents
     @templatesPath = @resolvePath @config.templates
-
-    # load default plugins
-    async.forEachSeries @constructor.defaultPlugins, (plugin, callback) =>
-      @logger.verbose "loading default plugin '#{ plugin }'"
-      fn = require "./../plugins/#{ plugin }"
-      fn.call null, this, callback
-    , (error) -> throw error if error?
 
   resolvePath: (pathname) ->
     ### Resolve *pathname* in working directory, returns an absolute path. ###


  loadPluginModule: (module, callback) ->
    ### Load a plugin *module*. ###
    @logger.verbose "loading plugin: #{ module }"
    async.waterfall [
      (callback) => @loadModule module, callback
      (fn, callback) =>
        try
          if not fn.__loaded


  loadPlugins: (callback) ->
    ### Loads any plugin found in *@config.plugins*. ###
    async.series [
      # load default plugins
      (callback) =>
        async.forEachSeries @constructor.defaultPlugins, (plugin, callback) =>
          @logger.verbose "loading default plugin: #{ plugin }"
          module = require "./../plugins/#{ plugin }"
          @loadPluginModule module, callback
        , callback
      # load user plugins
      (callback) =>
        async.forEachSeries @config.plugins, (plugin, callback) =>
          @logger.verbose "loading plugin: #{ plugin }"
          @loadPluginModule plugin, callback
        , callback
    ], callback

  loadViews: (callback) ->
    ### Loads files found in the *@config.views* directory and registers them as views. ###
