private void save() {
    try {
      File macroFolder = new File(MACRO_FOLDER);
      if (!macroFolder.exists()) {
        macroFolder.mkdir();
      }

      for (Macro macro : macros.values()) {
        if (!macro.isTransient()) {
          // write JSON to config file
          File file = new File(MACRO_FOLDER + "/" + macro.getName() + ".json");
          FileWriter fileWriter = new FileWriter(file);
          try {
            fileWriter.write(macro.toJSON().toJSONString());
          } finally {
            // close file
            fileWriter.close();
          }
        }
      }
    } catch (IOException e) {
      // deal with exception
      e.printStackTrace();
    }
  }