diff --git a/doctest/doctest.h b/doctest/doctest.h
index 6004376..28a14af 100644
--- a/doctest/doctest.h
+++ b/doctest/doctest.h
@@ -90,7 +90,7 @@
     int compare(const String& other, bool no_case = false) const;
 };
 
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#if !defined(DOCTEST_DISABLE)
 
 namespace detail
 {
@@ -205,11 +205,11 @@
     };
 } // namespace detail
 
-#endif // DOCTEST_CONFIG_DISABLE
+#endif // DOCTEST_DISABLE
 
 class Context
 {
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#if !defined(DOCTEST_DISABLE)
 
     detail::Vector<detail::Vector<String> > filters;
 
@@ -226,7 +226,7 @@
 
     int (*testExecutionWrapper)(funcType); // wrapper for test execution
 
-#endif // DOCTEST_CONFIG_DISABLE
+#endif // DOCTEST_DISABLE
 
 public:
     Context(int argc, char** argv);
@@ -240,7 +240,7 @@
 } // namespace doctest
 
 // if registering is not disabled
-#if !defined(DOCTEST_CONFIG_DISABLE)
+#if !defined(DOCTEST_DISABLE)
 
 namespace doctest
 {
@@ -367,9 +367,9 @@
 
 // =============================================================================
 // == WHAT FOLLOWS IS VERSIONS OF THE MACROS THAT DO NOT DO ANY REGISTERING!  ==
-// == THIS CAN BE ENABLED BY DEFINING DOCTEST_CONFIG_DISABLE GLOBALLY!        ==
+// == THIS CAN BE ENABLED BY DEFINING DOCTEST_DISABLE GLOBALLY!        ==
 // =============================================================================
-#else // DOCTEST_CONFIG_DISABLE
+#else // DOCTEST_DISABLE
 
 namespace doctest
 {
@@ -423,7 +423,7 @@
 
 #define DOCTEST_CHECK(expr) expr;
 
-#endif // DOCTEST_CONFIG_DISABLE
+#endif // DOCTEST_DISABLE
 
 #define doctest_test(name) DOCTEST_TEST(name)
 #define doctest_fixture(c, name) DOCTEST_FIXTURE(c, name)
@@ -433,7 +433,7 @@
 #define doctest_check DOCTEST_CHECK
 
 // == SHORT VERSIONS OF THE TEST/FIXTURE/TESTSUITE MACROS
-#ifdef DOCTEST_CONFIG_SHORT_MACRO_NAMES
+#ifndef DOCTEST_NO_SHORT_MACRO_NAMES
 
 #define TEST(name) DOCTEST_TEST(name)
 #define FIXTURE(c, name) DOCTEST_FIXTURE(c, name)
@@ -449,7 +449,7 @@
 #define testsuite_end doctest_testsuite_end
 #define check doctest_check
 
-#endif // DOCTEST_CONFIG_SHORT_MACRO_NAMES
+#endif // DOCTEST_NO_SHORT_MACRO_NAMES
 
 // this is here to clear the 'current test suite' for the current translation unit - at the top
 doctest_testsuite_end;
@@ -459,7 +459,8 @@
 // =============================================================================
 // == WHAT FOLLOWS IS THE IMPLEMENTATION OF THE TEST RUNNER                   ==
 // =============================================================================
-#if defined(DOCTEST_CONFIG_IMPLEMENT) && !defined(DOCTEST_CONFIG_DISABLE)
+#if(defined(DOCTEST_IMPLEMENT) || defined(DOCTEST_IMPLEMENT_WITH_MAIN)) &&           \
+        !defined(DOCTEST_DISABLE)
 #ifndef DOCTEST_LIBRARY_IMPLEMENTATION
 #define DOCTEST_LIBRARY_IMPLEMENTATION
 
@@ -470,9 +471,9 @@
 #include <new>     // placement new (can be skipped if the containers require 'construct()' from T)
 
 // the number of buckets used for the hash set
-#if !defined(DOCTEST_CONFIG_HASH_TABLE_NUM_BUCKETS)
-#define DOCTEST_CONFIG_HASH_TABLE_NUM_BUCKETS 1024
-#endif // DOCTEST_CONFIG_HASH_TABLE_NUM_BUCKETS
+#if !defined(DOCTEST_HASH_TABLE_NUM_BUCKETS)
+#define DOCTEST_HASH_TABLE_NUM_BUCKETS 1024
+#endif // DOCTEST_HASH_TABLE_NUM_BUCKETS
 
 // main namespace of the library
 namespace doctest
@@ -908,7 +909,7 @@
 
     // all the registered tests
     HashTable<TestData>& getRegisteredTests() {
-        static HashTable<TestData> data(DOCTEST_CONFIG_HASH_TABLE_NUM_BUCKETS);
+        static HashTable<TestData> data(DOCTEST_HASH_TABLE_NUM_BUCKETS);
         return data;
     }
 
@@ -1265,16 +1266,16 @@
 } // namespace doctest
 
 #endif // DOCTEST_LIBRARY_IMPLEMENTATION
-#endif // DOCTEST_CONFIG_IMPLEMENT
+#endif // DOCTEST_IMPLEMENT
 
 // == THIS SUPPLIES A MAIN FUNCTION AND SHOULD BE DONE ONLY IN ONE TRANSLATION UNIT
-#if defined(DOCTEST_CONFIG_MAIN) && !defined(DOCTEST_MAIN_CONFIGURED)
+#if defined(DOCTEST_IMPLEMENT_WITH_MAIN) && !defined(DOCTEST_MAIN_CONFIGURED)
 #define DOCTEST_MAIN_CONFIGURED
 int main(int argc, char** argv) {
     doctest::Context context(argc, argv);
     return context.runTests();
 }
-#endif // DOCTEST_CONFIG_MAIN
+#endif // DOCTEST_MAIN_CONFIGURED
 
 #if defined(__clang__)
 #pragma clang diagnostic pop
diff --git a/examples/dev_testing/CMakeLists.txt b/examples/dev_testing/CMakeLists.txt
index 58e3a72..b5e1544 100644
--- a/examples/dev_testing/CMakeLists.txt
+++ b/examples/dev_testing/CMakeLists.txt
@@ -5,8 +5,6 @@
 
 include(../../scripts/common.cmake)
 
-add_definitions(-DDOCTEST_CONFIG_SHORT_MACRO_NAMES)
-
 include_directories("../../doctest/")
 
 add_executable(${PROJECT_NAME} main.cpp test.cpp)
diff --git a/examples/dev_testing/main.cpp b/examples/dev_testing/main.cpp
index 0fba6e9..495f93e 100644
--- a/examples/dev_testing/main.cpp
+++ b/examples/dev_testing/main.cpp
@@ -1,6 +1,6 @@
-//#define DOCTEST_CONFIG_DISABLE
+//#define DOCTEST_DISABLE
 
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT
 #include "doctest.h"
 
 #include <cstdio>
diff --git a/examples/dev_testing/test.cpp b/examples/dev_testing/test.cpp
index 6d0fe6d..271e4e8 100644
--- a/examples/dev_testing/test.cpp
+++ b/examples/dev_testing/test.cpp
@@ -1,4 +1,4 @@
-//#define DOCTEST_CONFIG_DISABLE
+//#define DOCTEST_DISABLE
 
 #include "doctest.h"
 
diff --git a/examples/disabled/main.cpp b/examples/disabled/main.cpp
index be179d9..38468d1 100644
--- a/examples/disabled/main.cpp
+++ b/examples/disabled/main.cpp
@@ -1,7 +1,6 @@
-#define DOCTEST_CONFIG_DISABLE
+#define DOCTEST_DISABLE
 
-#define DOCTEST_CONFIG_MAIN
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT_WITH_MAIN
 #include "doctest.h"
 
 #include <cstdio>
diff --git a/examples/hello_world/main.cpp b/examples/hello_world/main.cpp
index 7a9716a..09dce4f 100644
--- a/examples/hello_world/main.cpp
+++ b/examples/hello_world/main.cpp
@@ -1,5 +1,4 @@
-#define DOCTEST_CONFIG_MAIN
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT_WITH_MAIN
 #include "doctest.h"
 
 #include <cstdio>
diff --git a/examples/multi_dll/common.h b/examples/multi_dll/common.h
index 4d2b889..003be28 100644
--- a/examples/multi_dll/common.h
+++ b/examples/multi_dll/common.h
@@ -27,7 +27,7 @@
   #endif
 #endif
 
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT
 #include "doctest.h"
 
 #include <cstdio>
diff --git a/examples/multiprocess/main.cpp b/examples/multiprocess/main.cpp
index 3548116..7946117 100644
--- a/examples/multiprocess/main.cpp
+++ b/examples/multiprocess/main.cpp
@@ -1,5 +1,4 @@
-#define DOCTEST_CONFIG_MAIN
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT_WITH_MAIN
 #include "doctest.h"
 
 //system("timeout /t 1 /nobreak");
diff --git a/examples/stress_test/main.cpp b/examples/stress_test/main.cpp
index ae6fbc2..605ef5b 100644
--- a/examples/stress_test/main.cpp
+++ b/examples/stress_test/main.cpp
@@ -1,5 +1,4 @@
-#define DOCTEST_CONFIG_MAIN
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT_WITH_MAIN
 #include "doctest.h"
 #include "stress.inl"
 #include "stress.inl"
diff --git a/examples/type_reporting/main.cpp b/examples/type_reporting/main.cpp
index 769c872..56046dc 100644
--- a/examples/type_reporting/main.cpp
+++ b/examples/type_reporting/main.cpp
@@ -1,5 +1,4 @@
-#define DOCTEST_CONFIG_MAIN
-#define DOCTEST_CONFIG_IMPLEMENT
+#define DOCTEST_IMPLEMENT_WITH_MAIN
 #include "doctest.h"
 
 #include <climits>
