anchor.diff:  class CommandManager {
     CommandManager() {
   
  -    COMMANDS['follow'] = (noun) => toast(CurrentPlayer.followPlayer(noun.trim()));
  +    COMMANDS['follow'] = (noun) => new Toast(CurrentPlayer.followPlayer(noun.trim()));
  +    COMMANDS["help"] = (_) => new Toast(
  +        "Available commands: " +
  +            COMMANDS.keys.toList().toString().replaceAll("[", "").replaceAll("]", "")
  +    );
       COMMANDS['interface'] = changeInterface;
       COMMANDS['playsong'] = (noun) => transmit('playSong', noun);
       COMMANDS['playsound'] = (noun) => transmit('playSound', noun);
  +    COMMANDS["reload"] = (_) => hardReload();
   
       if (Configs.testing) {
         COMMANDS
  
positive.code:   if (type == "desktop") {
      (querySelector("#MobileStyle") as StyleElement).disabled = true;
      localStorage['interface'] = 'desktop';
      toast('Switched to desktop view');
    } else if (type == "mobile") {
      (querySelector("#MobileStyle") as StyleElement).disabled = false;
      localStorage['interface'] = 'mobile';
      toast('Switched to mobile view');
    } else {
      toast('Interface type must be either desktop or mobile, ' + type + ' is invalid');
    }
  }
  
  /////////////////////////////////// TESTING ONLY
  
  go(String tsid) {
    tsid = tsid.trim();
  
negative.code:   if (showCollisionLines) {
      showCollisionLines = false;
      hideLineCanvas();
      new Toast('Collision lines hidden');
    }
    else {
      showCollisionLines = true;
      showLineCanvas();
      new Toast('Collision lines shown');
    }
  }
  
  togglePhysics(_) {
    if (CurrentPlayer.doPhysicsApply) {
      CurrentPlayer.doPhysicsApply = false;
      new Toast('Physics no longer apply to you');
    } else {
      CurrentPlayer.doPhysicsApply = true;
      new Toast('Physics apply to you');
    }
  }
  
  setMusic(String song) {
    new Toast("Music set to $song");
    audio.setSong(song);
  }
  
  