diff --git a/include/re_dbg.h b/include/re_dbg.h
new file mode 100644
index 0000000..a73670e
--- /dev/null
+++ b/include/re_dbg.h
@@ -0,0 +1,193 @@
+/**
+ * @file re_dbg.h  Interface to debugging module
+ *
+ * Copyright (C) 2010 Creytiv.com
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Debug levels */
+enum {
+	DBG_EMERG       = 0,       /**< System is unusable               */
+	DBG_ALERT       = 1,       /**< Action must be taken immediately */
+	DBG_CRIT        = 2,       /**< Critical conditions              */
+	DBG_ERR         = 3,       /**< Error conditions                 */
+	DBG_WARNING     = 4,       /**< Warning conditions               */
+	DBG_NOTICE      = 5,       /**< Normal but significant condition */
+	DBG_INFO        = 6,       /**< Informational                    */
+	DBG_DEBUG       = 7        /**< Debug-level messages             */
+};
+
+
+/**
+ * @def DEBUG_MODULE
+ *
+ * Module name defined by application
+ */
+
+/**
+ * @def DEBUG_LEVEL
+ *
+ * Debug level defined by application
+ */
+
+#ifndef DEBUG_MODULE
+# warning "DEBUG_MODULE is not defined"
+#define DEBUG_MODULE "?"
+#endif
+
+#ifndef DEBUG_LEVEL
+# warning "DEBUG_LEVEL is not defined"
+#define DEBUG_LEVEL 7
+#endif
+
+
+/**
+ * @def DEBUG_WARNING(...)
+ *
+ * Print warning message
+ */
+
+/**
+ * @def DEBUG_NOTICE(...)
+ *
+ * Print notice message
+ */
+
+/**
+ * @def DEBUG_INFO(...)
+ *
+ * Print info message
+ */
+
+/**
+ * @def DEBUG_PRINTF(...)
+ *
+ * Print debug message
+ */
+
+
+/* Check for ISO C99 variable argument macros */
+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)	\
+	|| (__GNUC__ >= 3)
+
+#if (DEBUG_LEVEL >= 4)
+#define DEBUG_WARNING(...) \
+	dbg_printf(DBG_WARNING, DEBUG_MODULE ": " __VA_ARGS__)
+#else
+#define DEBUG_WARNING(...)
+#endif
+
+#if (DEBUG_LEVEL >= 5)
+#define DEBUG_NOTICE(...) \
+	dbg_printf(DBG_NOTICE, DEBUG_MODULE ": " __VA_ARGS__)
+#else
+#define DEBUG_NOTICE(...)
+#endif
+
+#if (DEBUG_LEVEL >= 6)
+#define DEBUG_INFO(...) \
+	dbg_printf(DBG_INFO, DEBUG_MODULE ": " __VA_ARGS__)
+#else
+#define DEBUG_INFO(...)
+#endif
+
+#if (DEBUG_LEVEL >= 7)
+#define DEBUG_PRINTF(...) \
+	dbg_printf(DBG_DEBUG, DEBUG_MODULE ": " __VA_ARGS__)
+#else
+#define DEBUG_PRINTF(...)
+#endif
+
+/* GNU extensions for variable argument macros */
+#elif defined(__GNUC__)
+
+#if (DEBUG_LEVEL >= 4)
+#define DEBUG_WARNING(a...) dbg_printf(DBG_WARNING, DEBUG_MODULE ": " a)
+#else
+#define DEBUG_WARNING(a...)
+#endif
+
+#if (DEBUG_LEVEL >= 5)
+#define DEBUG_NOTICE(a...) dbg_printf(DBG_NOTICE, DEBUG_MODULE ": " a)
+#else
+#define DEBUG_NOTICE(a...)
+#endif
+
+#if (DEBUG_LEVEL >= 6)
+#define DEBUG_INFO(a...) dbg_printf(DBG_INFO, DEBUG_MODULE ": " a)
+#else
+#define DEBUG_INFO(a...)
+#endif
+
+#if (DEBUG_LEVEL >= 7)
+#define DEBUG_PRINTF(a...) dbg_printf(DBG_DEBUG, DEBUG_MODULE ": " a)
+#else
+#define DEBUG_PRINTF(a...)
+#endif
+
+/* No variable argument macros */
+#else
+
+#if (DEBUG_LEVEL >= 4)
+#define DEBUG_WARNING dbg_warning
+#else
+#define DEBUG_WARNING dbg_noprintf
+#endif
+
+#if (DEBUG_LEVEL >= 5)
+#define DEBUG_NOTICE dbg_notice
+#else
+#define DEBUG_NOTICE dbg_noprintf
+#endif
+
+#if (DEBUG_LEVEL >= 6)
+#define DEBUG_INFO dbg_info
+#else
+#define DEBUG_INFO dbg_noprintf
+#endif
+
+#if (DEBUG_LEVEL >= 7)
+#define DEBUG_PRINTF dbg_noprintf
+#else
+#define DEBUG_PRINTF dbg_noprintf
+#endif
+
+#endif
+
+
+/** Debug flags */
+enum dbg_flags {
+	DBG_NONE = 0,                 /**< No debug flags         */
+	DBG_TIME = 1<<0,              /**< Print timestamp flag   */
+	DBG_ANSI = 1<<1,              /**< Print ANSI color codes */
+	DBG_ALL  = DBG_TIME|DBG_ANSI  /**< All flags enabled      */
+};
+
+
+/**
+ * Defines the debug print handler
+ *
+ * @param level Debug level
+ * @param p     Debug string
+ * @param len   String length
+ * @param arg   Handler argument
+ */
+typedef void (dbg_print_h)(int level, const char *p, size_t len, void *arg);
+
+void dbg_init(int level, enum dbg_flags flags);
+void dbg_close(void);
+int  dbg_logfile_set(const char *name);
+void dbg_handler_set(dbg_print_h *ph, void *arg);
+void dbg_printf(int level, const char *fmt, ...);
+void dbg_noprintf(const char *fmt, ...);
+void dbg_warning(const char *fmt, ...);
+void dbg_notice(const char *fmt, ...);
+void dbg_info(const char *fmt, ...);
+const char *dbg_level_str(int level);
+
+#ifdef __cplusplus
+}
+#endif
