anchor.diff:              });
             });
             break;
  -        
  +
           case "plugins":
             request.reply({
               "names": pm.plugins.toList()
             });
             break;
  -        
  +
           case "plugin-commands":
             String pluginName = m['plugin'];
             var pubspec = pm.plugin(pluginName).pubspec;
  -          
  +
             if (pubspec['plugin'] == null || pubspec['plugin']['commands'] == null) {
               request.reply(null);
             } else {
               Map<String, Map<String, dynamic>> commands = pubspec['plugin']['commands'];
               Map<String, Map<String, dynamic>> converted = {};
  -            
  +
               for (var name in commands.keys) {
  -               converted[name] = {
  +              converted[name] = {
                   "usage": commands[name]['usage'],
                   "description": commands[name]['description']
  -               };
  +              };
               }
  -            
  +
               request.reply(converted);
             }
             break;
  
positive.code:             if (!handler.isPluginElevated(plugin)) {
                throw new Exception("Plugin must declare itself as being elevated in order to broadcast a message to all plugins.");
              }
              
              var data = m['data'];
              pm.sendAll(data);
              break;
            case "stop-bot":
              var futures = [];
              
              for (var botname in bot.bots) {
                var completer = new Completer();
                futures.add(completer.future);
  
negative.code:   final PluginHandler handler;
  
    PluginManager get pm => handler.pm;
  
    PluginCommunicator(this.bot, this.handler) {
      _handleEventListeners();
    }
  
    void initialStart() {
      var host = bot.config["http"]["host"] != null ? bot.config["http"]["host"] : "0.0.0.0";
      var port = bot.config["http"]["port"];
  
      HttpServer.bind(host, port).then((server) {
        server.listen((request) {
          var segments = request.uri.pathSegments;
          if (segments.length >= 2 && segments[0] == "plugin" && _httpPorts.containsKey(segments[1])) {
            var name = segments[1];
            var segs = []
                ..addAll(segments)
                ..removeAt(0)
                ..removeAt(0);
            var path = segs.join("/");
            if (path.trim().isEmpty) {
              path = "/";
            }
            HttpHelper.forward(request, path, InternetAddress.ANY_IP_V4.address, _httpPorts[name]);
          }
  
          var response = request.response;
  
          if (request.uri.path.trim() == "/plugins.json") {
            if (request.method != "GET") {
              response.statusCode = HttpStatus.METHOD_NOT_ALLOWED;
              response.writeln("ERROR: Only GET is allowed here.");
              response.close();
            } else {
              response.statusCode = 200;
              response.writeln(encodeJSON(pm.plugins));
              response.close();
            }
          } else {
            response.statusCode = 404;
            response.writeln("ERROR: 404 not found.");
            response.close();
          }
        });
      });
    }
  
    JsonEncoder _jsonEncoder = new JsonEncoder.withIndent("  ");
  
    String encodeJSON(obj) {
      return _jsonEncoder.convert(obj);
    }
  
    Map<String, int> _httpPorts = {};
  
    void handle() {
  