   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. ###


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

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

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

    ], callback

  load: (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
