       catch e
         throw new Error "Could not find plugin '#{foundPlugin}' in NPM modules"
 
-      # If we have something but seems empty, throw
-      if pContext instanceof Object
-        unless pContext.settings or pContext.rules
-          throw new Error "Plugin empty or bad: #{pluginName} (#{foundPlugin})"
-
+      # If plugin does not return an Object, tell user
+      unless pContext instanceof Object
+        throw new Error "Plugin empty or unparseable: #{pluginName} (#{foundPlugin})"
+      else
         if pContext.settings
           settings = if typeof pContext.settings is 'function'
             pContext.settings()

            if 'string' is Utils.toType rules
              rules = yaml.safeLoad rules, yaml.JSON_SCHEMA

            # Make sure settings is not overwritten by rules.
            Utils.recursiveMerge context, Utils.omit(rules, 'settings'), false

          resolve context
        catch e

          if 'string' is Utils.toType rules
            rules = yaml.safeLoad rules, yaml.JSON_SCHEMA

          # Make sure neither settings nor init are overwritten by rules.
          Utils.recursiveMerge context, Utils.omit(rules, ['settings', 'init']), false
        return Q context

    Q.Promise (resolve, reject, notify) ->
