public void update(Player p, String value, boolean showPrompt) {
    if (value.equals("reset")) {
      reset();
      return;
    }

    if (activeCom != null) {
      activeCom.update(this, value);
      if (showPrompt) nextPrompt(p);
    }

    if (activeCat != null) {
      activeCat.update(this, value);
      if (showPrompt) nextPrompt(p);
    }

    if (activeCom == null && activeCat == null) {
      rootNode.update(this, value);
      if (showPrompt) nextPrompt(p);
    }
  }