Options class for test
diff --git a/src/jsontestrunner/main.cpp b/src/jsontestrunner/main.cpp
index 3ded3bd..5db8115 100644
--- a/src/jsontestrunner/main.cpp
+++ b/src/jsontestrunner/main.cpp
@@ -132,7 +132,8 @@
                                  const std::string& kind,
                                  const Json::Features& features,
                                  bool parseOnly,
-                                 Json::Value* root) {
+                                 Json::Value* root)
+{
   Json::Reader reader(features);
   bool parsingSuccessful = reader.parse(input, *root);
   if (!parsingSuccessful) {
@@ -153,16 +154,31 @@
   }
   return 0;
 }
-
-static int rewriteValueTree(const std::string& rewritePath,
-                            const Json::Value& root,
-                            std::string* rewrite) {
-  // Json::FastWriter writer;
-  // writer.enableYAMLCompatibility();
+// static std::string useFastWriter(Json::Value const& root) {
+//   Json::FastWriter writer;
+//   writer.enableYAMLCompatibility();
+//   return writer.write(root);
+// }
+static std::string useStyledWriter(
+    Json::Value const& root)
+{
+  Json::StyledWriter writer;
+  return writer.write(root);
+}
+static std::string useStyledStreamWriter(
+    Json::Value const& root)
+{
   Json::StyledStreamWriter writer;
   std::ostringstream sout;
   writer.write(sout, root);
-  *rewrite = sout.str();
+  return sout.str();
+}
+static int rewriteValueTree(
+    const std::string& rewritePath,
+    const Json::Value& root,
+    std::string* rewrite)
+{
+  *rewrite = useStyledWriter(root);
   FILE* fout = fopen(rewritePath.c_str(), "wt");
   if (!fout) {
     printf("Failed to create rewrite file: %s\n", rewritePath.c_str());
@@ -197,56 +213,56 @@
   return 3;
 }
 
-int parseCommandLine(int argc,
-                     const char* argv[],
-                     Json::Features& features,
-                     std::string& path,
-                     bool& parseOnly) {
-  parseOnly = false;
+struct Options
+{
+  std::string path;
+  Json::Features features;
+  bool parseOnly;
+};
+static int parseCommandLine(
+    int argc, const char* argv[], Options* opts)
+{
+  opts->parseOnly = false;
   if (argc < 2) {
     return printUsage(argv);
   }
-
   int index = 1;
   if (std::string(argv[1]) == "--json-checker") {
-    features = Json::Features::strictMode();
-    parseOnly = true;
+    opts->features = Json::Features::strictMode();
+    opts->parseOnly = true;
     ++index;
   }
-
   if (std::string(argv[1]) == "--json-config") {
     printConfig();
     return 3;
   }
-
   if (index == argc || index + 1 < argc) {
     return printUsage(argv);
   }
-
-  path = argv[index];
+  opts->path = argv[index];
   return 0;
 }
-
+static void tryTest(Options const& opts)
+{
+}
 int main(int argc, const char* argv[]) {
-  std::string path;
-  Json::Features features;
-  bool parseOnly;
-  int exitCode = parseCommandLine(argc, argv, features, path, parseOnly);
+  Options opts;
+  int exitCode = parseCommandLine(argc, argv, &opts);
   if (exitCode != 0) {
     return exitCode;
   }
 
   try {
-    std::string input = readInputTestFile(path.c_str());
+    std::string input = readInputTestFile(opts.path.c_str());
     if (input.empty()) {
-      printf("Failed to read input or empty input: %s\n", path.c_str());
+      printf("Failed to read input or empty input: %s\n", opts.path.c_str());
       return 3;
     }
 
     std::string basePath = removeSuffix(argv[1], ".json");
-    if (!parseOnly && basePath.empty()) {
+    if (!opts.parseOnly && basePath.empty()) {
       printf("Bad input path. Path does not end with '.expected':\n%s\n",
-             path.c_str());
+             opts.path.c_str());
       return 3;
     }
 
@@ -256,8 +272,9 @@
 
     Json::Value root;
     exitCode = parseAndSaveValueTree(
-        input, actualPath, "input", features, parseOnly, &root);
-    if (exitCode || parseOnly) {
+        input, actualPath, "input",
+        opts.features, opts.parseOnly, &root);
+    if (exitCode || opts.parseOnly) {
       return exitCode;
     }
     std::string rewrite;
@@ -267,7 +284,8 @@
     }
     Json::Value rewriteRoot;
     exitCode = parseAndSaveValueTree(
-        rewrite, rewriteActualPath, "rewrite", features, parseOnly, &rewriteRoot);
+        rewrite, rewriteActualPath, "rewrite",
+        opts.features, opts.parseOnly, &rewriteRoot);
     if (exitCode) {
       return exitCode;
     }