diff --git a/examples/disabled/main.cpp b/examples/disabled/main.cpp
index 5fcfe79..1ec0723 100644
--- a/examples/disabled/main.cpp
+++ b/examples/disabled/main.cpp
@@ -14,7 +14,9 @@
     // set an exception translator for int
     doctest::registerExceptionTranslator(intTranslator);
     
-    doctest::Context context; // initialize
+    doctest::Context context;
+
+    // !!! THIS IS JUST AN EXAMPLE SHOWING HOW DEFAULTS/OVERRIDES ARE SET !!!
 
     // defaults
     context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in the name
@@ -23,8 +25,8 @@
     context.applyCommandLine(argc, argv);
 
     // overrides
-    context.setOption("abort-after", 5); // stop test execution after 5 failed assertions
-    context.setOption("sort", "name");   // sort the test cases by their name
+    context.setOption("abort-after", 5);   // stop test execution after 5 failed assertions
+    context.setOption("order_by", "name"); // sort the test cases by their name
 
     int res = context.run(); // run
 
diff --git a/examples/multi_file_example/main.cpp b/examples/multi_file_example/main.cpp
index 227ce21..5ecfab6 100644
--- a/examples/multi_file_example/main.cpp
+++ b/examples/multi_file_example/main.cpp
@@ -2,7 +2,9 @@
 #include "doctest.h"
 
 int main(int argc, char** argv) {
-    doctest::Context context; // initialize
+    doctest::Context context;
+
+    // !!! THIS IS JUST AN EXAMPLE SHOWING HOW DEFAULTS/OVERRIDES ARE SET !!!
 
     // defaults
     context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in their name
@@ -11,8 +13,8 @@
     context.applyCommandLine(argc, argv);
 
     // overrides
-    context.setOption("abort-after", 5); // stop test execution after 5 failed assertions 
-    context.setOption("sort", "name");   // sort the test cases by their name
+    context.setOption("abort-after", 5);   // stop test execution after 5 failed assertions
+    context.setOption("order_by", "name"); // sort the test cases by their name
 
     int res = context.run(); // run
 
diff --git a/examples/separate_headers/main.cpp b/examples/separate_headers/main.cpp
index 7979a06..68c0799 100644
--- a/examples/separate_headers/main.cpp
+++ b/examples/separate_headers/main.cpp
@@ -1,7 +1,9 @@
 #include "parts/doctest_impl.h"
 
 int main(int argc, char** argv) {
-    doctest::Context context; // initialize
+    doctest::Context context;
+
+    // !!! THIS IS JUST AN EXAMPLE SHOWING HOW DEFAULTS/OVERRIDES ARE SET !!!
 
     // defaults
     context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in the name
@@ -10,7 +12,7 @@
     context.applyCommandLine(argc, argv);
 
     // overrides
-    context.setOption("sort", "name");    // sort the test cases by their name
+    context.setOption("order_by", "name"); // sort the test cases by their name
 
     int res = context.run(); // run
 
diff --git a/examples/separate_headers/test.cpp b/examples/separate_headers/test.cpp
index a47b51f..f2a5584 100644
--- a/examples/separate_headers/test.cpp
+++ b/examples/separate_headers/test.cpp
@@ -255,7 +255,7 @@
     TypePair<char, int>
 >::Result pairs;
 
-TYPE_TO_STRING(TypePair<char, int>)
+//TYPE_TO_STRING(TypePair<char, int>)
 
 TEST_CASE_TEMPLATE("trololo", T, pairs) {
     CHECK(sizeof(typename T::A) == static_cast<unsigned>(4));
@@ -266,17 +266,18 @@
 }
 
 TEST_CASE_TEMPLATE_DEFINE("separate", T, it) {
-    T a = T();
-    ++a;
-    SUBCASE("root") {
-        ++a;
-        SUBCASE("1") {
-            CHECK(doctest::Approx(a) == T());
-        }
-        SUBCASE("2") {
-            CHECK(doctest::Approx(a) == T());
-        }
-    }
+    MESSAGE("aaa");
+    //T a = T();
+    //++a;
+    //SUBCASE("root") {
+    //    ++a;
+    //    SUBCASE("1") {
+    //        CHECK(doctest::Approx(a) == T());
+    //    }
+    //    SUBCASE("2") {
+    //        CHECK(doctest::Approx(a) == T());
+    //    }
+    //}
 }
 
 TEST_CASE_TEMPLATE_INSTANTIATE(it, the_types)
diff --git a/examples/user_supplied_main/main.cpp b/examples/user_supplied_main/main.cpp
index 8354952..51a46ee 100644
--- a/examples/user_supplied_main/main.cpp
+++ b/examples/user_supplied_main/main.cpp
@@ -4,12 +4,14 @@
 int program();
 
 int main(int argc, char** argv) {
-    doctest::Context context; // initialize
+    doctest::Context context;
+
+    // !!! THIS IS JUST AN EXAMPLE SHOWING HOW DEFAULTS/OVERRIDES ARE SET !!!
 
     // defaults
     context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in the name
-    context.setOption("abort-after", 5); // stop test execution after 5 failed assertions
-    context.setOption("sort", "name");   // sort the test cases by their name
+    context.setOption("abort-after", 5);   // stop test execution after 5 failed assertions
+    context.setOption("order_by", "name"); // sort the test cases by their name
 
     context.applyCommandLine(argc, argv);
 
