diff --git a/common/utils/assertions.h b/common/utils/assertions.h
index 3ce939c96c1d5ac479165b4bbf82019ba19a0693..5518e765a564b75ddd76b928d55c1e7a5cbbfe3d 100644
--- a/common/utils/assertions.h
+++ b/common/utils/assertions.h
@@ -34,58 +34,38 @@
 #include <stdint.h>
 #include <inttypes.h>
 
-#define DevCheck(cOND, vALUE1, vALUE2, vALUE3)                          \
-do {                                                                    \
-    if (!(cOND)) {                                                      \
-        fprintf(stderr, "%s:%d:%s Assertion `"#cOND"` failed.\n",       \
-                __FILE__, __LINE__, __FUNCTION__);                      \
-        fprintf(stderr, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n",  \
-        (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3);                         \
-        fprintf(stderr, "Exiting execution\n");                         \
-        fflush(stdout);                                                 \
-        fflush(stderr);                                                 \
-        abort();                                                        \
-    }                                                                   \
+#define _Assert_(cOND, eXIT, fORMAT, aRGS...)                               \
+do {                                                                        \
+    if (!(cOND)) {                                                          \
+        fprintf(stderr, "%s:%d:%s Assertion `"#cOND"` failed!\n" fORMAT,    \
+                __FILE__, __LINE__, __FUNCTION__, ##aRGS);                  \
+        if (eXIT != 0) {                                                    \
+            fprintf(stderr, "Exiting execution\n");                         \
+            fflush(stdout);                                                 \
+            fflush(stderr);                                                 \
+            abort();                                                        \
+        }                                                                   \
+    }                                                                       \
 } while(0)
 
-#define DevCheck4(cOND, vALUE1, vALUE2, vALUE3, vALUE4)                 \
-do {                                                                    \
-    if (!(cOND)) {                                                      \
-        fprintf(stderr, "%s:%d:%s\nAssertion `"#cOND"` failed.\n",      \
-                __FILE__, __LINE__, __FUNCTION__);                      \
-        fprintf(stderr, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n"   \
-        #vALUE4": %"PRIdMAX"\n",                                                \
-        (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3, (intmax_t)vALUE4);            \
-        fprintf(stderr, "Exiting execution\n");                         \
-        fflush(stdout);                                                 \
-        fflush(stderr);                                                 \
-        exit(EXIT_FAILURE);                                             \
-    }                                                                   \
-} while(0)
+#define AssertFatal(cOND, fORMAT, aRGS...)  _Assert_(cOND, 1, fORMAT, ##aRGS)
 
-#define DevParam(vALUE1, vALUE2, vALUE3)    \
-    DevCheck(0 == 1, vALUE1, vALUE2, vALUE3)
-
-#define DevAssert(cOND)                                                 \
-do {                                                                    \
-    if (!(cOND))    {                                                   \
-        fprintf(stderr, "%s:%d:%s Assertion `"#cOND"` failed\n",        \
-        __FILE__, __LINE__, __FUNCTION__);                              \
-        fprintf(stderr, "Exiting execution\n");                         \
-        fflush(stdout);                                                 \
-        fflush(stderr);                                                 \
-        abort();                                                        \
-    }                                                                   \
-} while(0)
+#define AssertError(cOND, fORMAT, aRGS...)  _Assert_(cOND, 0, fORMAT, ##aRGS)
 
-#define DevMessage(mESSAGE)                                             \
-do {                                                                    \
-    fprintf(stderr, "%s:%d:%s Execution interrupted: `"#mESSAGE"`.\n",  \
-    __FILE__, __LINE__, __FUNCTION__);                                  \
-    fprintf(stderr, "Exiting execution\n");                             \
-    fflush(stdout);                                                 \
-    fflush(stderr);                                                     \
-    abort();                                                            \
-} while(0)
+
+
+#define DevCheck(cOND, vALUE1, vALUE2, vALUE3)                                              \
+_Assert_(cOND, 1, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n\n",  \
+         (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3)
+
+#define DevCheck4(cOND, vALUE1, vALUE2, vALUE3, vALUE4)                                                             \
+_Assert_(cOND, 1, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n"#vALUE4": %"PRIdMAX"\n\n",   \
+         (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3, (intmax_t)vALUE4)
+
+#define DevParam(vALUE1, vALUE2, vALUE3)    DevCheck(0, vALUE1, vALUE2, vALUE3)
+
+#define DevAssert(cOND)                     _Assert_(cOND, 1, "")
+
+#define DevMessage(mESSAGE)                 _Assert_(0, 1, #mESSAGE)
 
 #endif /* ASSERTIONS_H_ */