diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0e2ade5..6c80207 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,7 +42,7 @@ if ( NOT CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # PROJECT_IS_TOP_LEVEL
    set( USE_LEPTO 1 PARENT_SCOPE )
 endif()
 
-find_package( ConfigHash REQUIRED )
+# find_package( ConfigHash REQUIRED )
 
 set(
    headers
@@ -109,9 +109,15 @@ if ( COMMON_CONFIG_HEADER )
    set ( LEPTO_CONFIG_HEADER "${COMMON_CONFIG_HEADER}" )
 elseif( EXISTS "${CMAKE_SYSROOT}/usr/include/lepto/config.h" )
    set ( LEPTO_CONFIG_HEADER "${CMAKE_SYSROOT}/usr/include/lepto/config.h" )
+else()
+   set ( LEPTO_CONFIG_HEADER "${CMAKE_SOURCE_DIR}/include/lepto/presets/config_full.h" )
 endif()
 
-if( NOT ${COMMON_CONFIG_HEADER_INCLUDED} )
+# message( FATAL_ERROR "LEPTO_CONFIG_HEADER: ${LEPTO_CONFIG_HEADER}" )
+# message( FATAL_ERROR "COMMON_CONFIG_HEADER_INCLUDED: '${COMMON_CONFIG_HEADER_INCLUDED}'" )
+
+if( NOT COMMON_CONFIG_HEADER_INCLUDED )
+   # message( FATAL_ERROR "A" )
    if( LEPTO_CONFIG_HEADER )
       get_filename_component( LEPTO_CONFIG_PATH ${LEPTO_CONFIG_HEADER} DIRECTORY )
       get_filename_component( LEPTO_CONFIG_FILE ${LEPTO_CONFIG_HEADER} NAME )
@@ -141,6 +147,8 @@ if( NOT ${COMMON_CONFIG_HEADER_INCLUDED} )
                "root cmake file. If you are sure that you don't need it, set "
                "'LEPTO_CONFIGURED' cmake variable")
    endif()
+else()
+   message( FATAL_ERROR "B" )
 endif()
 
 
diff --git a/include/lepto/log.h b/include/lepto/log.h
index 640e4e2..24e66d1 100644
--- a/include/lepto/log.h
+++ b/include/lepto/log.h
@@ -27,6 +27,7 @@
 #include <stdarg.h>
 #include <lepto/lepto.h>               // IS_ENABLED( )
 #include <stdlib.h>                    // abort()
+#include <lepto/logCodes.h>
 
 
 /*--- Implementation -------------------------------------------------------*/
@@ -76,11 +77,12 @@ enum class ELogCategory
    Debug       = 0,
    Good        = 0,
    Info        = 0,
-   Event       = 1,  // Device-to-device logic via log codes. E.g. "I want to shut down"
-   Caution     = 1,
-   Warning     = 2,
-   Critical    = 3,
-   Fatal       = 4,
+   Gone        = 1,
+   Event       = 2,  // Device-to-device logic via log codes. E.g. "I want to shut down"
+   Caution     = 2,
+   Warning     = 3,
+   Critical    = 4,
+   Fatal       = 5,
 
    Function    = 8,    // Function area
    Beckon      = 8,    //
@@ -89,6 +91,7 @@ enum class ELogCategory
 };
 
 // The ELogCode allways contains the cathegory
+#if 0
 enum class ELogCode: int;
 
 inline constexpr ELogCode operator| (ELogCategory cat, int i)
@@ -96,7 +99,7 @@ inline constexpr ELogCode operator| (ELogCategory cat, int i)
    //return( (ELogBlended)( (int) cat | ( i << 4 ) ) );
    return( (ELogCode)( (int) cat | ( i ) ) );
 }
-
+#endif
 /*
 inline constexpr operator ELogBlended(ELogCategory cat)
 {
@@ -104,22 +107,27 @@ inline constexpr operator ELogBlended(ELogCategory cat)
 }
 */
 
+#if 0
 inline constexpr ELogCategory toCategory(ELogCode code)
 {
    return( (ELogCategory)( (int) code & 0xF ) );
 }
-
+#endif
 
 #if ! IS_ENABLED( CONFIG_LEPTO_LOG_SILENT )
-   #define lDebugReal(msg, ...) lLog(ELogCategory::Debug|0, msg, ##__VA_ARGS__ )
-   #define lInfo(msg, ...) lLog(ELogCategory::Info|0, msg, ##__VA_ARGS__ )
-   #define lCaution(msg, ... ) lLog(ELogCategory::Caution|0, msg, ##__VA_ARGS__ )
-   #define lWarning(msg, ... ) lLog(ELogCategory::Warning|0, msg, ##__VA_ARGS__ )
-   #define lCritical(msg, ... ) lLog(ELogCategory::Critical|0, msg, ##__VA_ARGS__ )
-   #if defined STM32
+   #define lDebugReal(msg, ...) lLog(ELogCategory::Debug, msg, ##__VA_ARGS__ )
+   #define lInfo(msg, ...) lLog(ELogCategory::Info, msg, ##__VA_ARGS__ )
+   #define lCaution(msg, ... ) lLog(ELogCategory::Caution, msg, ##__VA_ARGS__ )
+   #define lWarning(msg, ... ) lLog(ELogCategory::Warning, msg, ##__VA_ARGS__ )
+   #define lCritical(msg, ... ) lLog(ELogCategory::Critical, msg, ##__VA_ARGS__ )
+
+   #define lWarningC( code, msg, ... ) lLog(ELogCategory::Warning, "#%X " msg, code, ##__VA_ARGS__ )
+   #define lCriticalC( code, msg, ... ) lLog(ELogCategory::Critical, "#%X """ msg, code, ##__VA_ARGS__ )
+
+#if defined STM32
       #define lFatal(msg, ... ) abort();
    #else
-      #define lFatal(msg, ... ) lLog(ELogCategory::Fatal|0, msg, ##__VA_ARGS__ )
+      #define lFatal(msg, ... ) lLog(ELogCategory::Fatal, msg, ##__VA_ARGS__ )
    #endif
    #define lCalm() lLog(ELogCategory::Calm|0, "" )
 #else
@@ -130,6 +138,9 @@ inline constexpr ELogCategory toCategory(ELogCode code)
    #define lCritical(msg, ... ) lLog(ELogCategory::Critical|0, "" )
    #define lFatal(msg, ... ) lLog(ELogCategory::Fatal|0, "" )
    #define lCalm() lLog(ELogCategory::Calm|0, "" )
+
+   #define lWarningC(code, msg, ... ) lLog(ELogCategory::Warning|0, "" )
+   #define lCriticalC(code, msg, ... ) lLog(ELogCategory::Critical|0, "" )
 #endif
 
 // You can use the LDS macro to give two different messages depending on the
@@ -182,10 +193,10 @@ extern "C"
    #if ! IS_ENABLED( CONFIG_LEPTO_LOG_SILENT )
 
       extern const char *categoryMessages[];
-      void lVLogSimple(ELogCode code, const char *format, va_list &list );
-      void lVLogPretty(const char*file, int line, ELogCode code, const char *format, va_list &list );
-      void lLogSimple(ELogCode code, const char *format, ... );
-      void lLogPretty(const char*file, int line, ELogCode code, const char *format, ... );
+      void lVLogSimple(ELogCategory code, const char *format, va_list &list );
+      void lVLogPretty(const char*file, int line, ELogCategory code, const char *format, va_list &list );
+      void lLogSimple(ELogCategory code, const char *format, ... );
+      void lLogPretty(const char*file, int line, ELogCategory code, const char *format, ... );
       
    #else
 
diff --git a/include/lepto/log_private.h b/include/lepto/log_private.h
index 5a9781d..c6a3305 100644
--- a/include/lepto/log_private.h
+++ b/include/lepto/log_private.h
@@ -70,7 +70,11 @@ struct SLogEntry
       clock_t timeStamp;
    #endif
       
+   ELogCategory category;
+
+   #if IS_ENABLED( CONFIG_LEPTO_LOG_CODE )
    ELogCode code;
+   #endif
 
    #if IS_ENABLED( CONFIG_LEPTO_LOG_EVENTS )
    //unsigned int event;
diff --git a/src/log.cpp b/src/log.cpp
index 69c5382..4d69c8b 100644
--- a/src/log.cpp
+++ b/src/log.cpp
@@ -77,9 +77,9 @@ the same time does not make sense.
 #endif
 
 #if IS_ENABLED( CONFIG_LEPTO_LOG_PRETTY_PRINT )
-void lVLogPretty(const char*file, int line, ELogCode code, const char *format, va_list &list )
+void lVLogPretty(const char*file, int line, ELogCategory category, const char *format, va_list &list )
 #else
-void lVLogSimple(ELogCode code, const char *format, va_list &list )
+void lVLogSimple(ELogCategory category, const char *format, va_list &list )
 #endif
 {
    #if ! IS_ENABLED( CONFIG_LEPTO_LOG_DIRECT_PRINT )
@@ -114,16 +114,25 @@ void lVLogSimple(ELogCode code, const char *format, va_list &list )
          le->timeStamp = clock() / 1000;
       #endif
    #endif
-      
-   #if IS_ENABLED( CONFIG_LEPTO_LOG_CALLBACK )
-      le->code=code;
+
+   le->category=category;
+
+   #if IS_ENABLED( CONFIG_LEPTO_LOG_CODE )
+      if( memcmp(format, "#%X ", 4) == 0 )
+      {
+         le->code=va_arg(list, int);
+
+         // Either adjust the format string or restore the list
+         //va_start(list, format);
+         format+=4;
+      }
    #endif
-      
+
    #if ! IS_ENABLED( CONFIG_LEPTO_LOG_SILENT )
       vsnprintf( &le->logString[0], CONFIG_LEPTO_LOG_MAX_STRING_LENGTH, format, list);
    #endif
    
-   if( toCategory(code) == ELogCategory::Fatal )
+   if( category == ELogCategory::Fatal )
    {
       #if defined ( STM32 )
          // Fatal means fatal. Dont even try to print anything.
@@ -150,11 +159,11 @@ void lVLogSimple(ELogCode code, const char *format, va_list &list )
 
 #if IS_ENABLED( CONFIG_LEPTO_LOG_PRETTY_PRINT )
 
-void lLogPretty( const char*file, int line, ELogCode code, const char *format, ... )
+void lLogPretty( const char*file, int line, ELogCategory category, const char *format, ... )
 {
    va_list list;
    va_start(list, format); // expected-note{{Initialized va_list}}
-   lVLogPretty( file, line, code, format, list);
+   lVLogPretty( file, line, category, format, list);
    return;
 }
 
@@ -182,7 +191,7 @@ void logEventLoop()
    while( ( le = (const SLogEntry*)logs.frontEntry() ) )
    {
       // Dont crash due to missing category string. Text is empty anyways.
-      if( (int)toCategory(le->code) < (int)ELogCategory::Function )
+      if( (int)le->category < (int)ELogCategory::Function )
       {
       #if IS_ENABLED( CONFIG_LEPTO_LOG_PRETTY_PRINT )
          logPrintPretty(le);
@@ -203,7 +212,7 @@ void logEventLoop()
    if(logOverflow)
    {
       logOverflow=false;
-      lCritical( "LOF" );
+      lCriticalC( LC_LOG_OVERFLOW, LDS( "LOF", "Log overflow" ) );
    }
 
    #endif // ? ! CONFIG_LEPTO_LOG_DIRECT_PRINT
diff --git a/src/logPrinter.cpp b/src/logPrinter.cpp
index adc4835..6469c21 100644
--- a/src/logPrinter.cpp
+++ b/src/logPrinter.cpp
@@ -66,12 +66,14 @@ const char *categoryMessages[]=
    { [(int)ELogCategory::Debug]="",
      //[(int)ELogCategory::Caution]="",
      //[(int)ELogCategory::Info]="",
+     [(int)ELogCategory::Gone]=ANSI_GREEN "Gone: ",
      [(int)ELogCategory::Caution]=ANSI_YELLOW "Caution: ",
      [(int)ELogCategory::Warning]=ANSI_ORANGE "Warning: ",
      [(int)ELogCategory::Critical]=ANSI_RED "Error: ",
      [(int)ELogCategory::Fatal]=ANSI_RED "Fatal: " };
 #else
    { [ (int)ELogCategory::Debug ]="",
+     [(int)ELogCategory::Gone ]="G:",
      [(int)ELogCategory::Caution ]="C:",
      [(int)ELogCategory::Warning ]="W:",
      [(int)ELogCategory::Critical ]="E:",
@@ -105,7 +107,7 @@ void logPrintPretty( const SLogEntry* le )
       fputs(".", stdout);
    }
    fputs( ": ", stdout );
-   fputs( categoryMessages[ (int)toCategory(le->code) ], stdout );
+   fputs( categoryMessages[ (int)le->category ], stdout );
    fputs( ANSI_NORMAL,  stdout );
    fputs( le->logString, stdout );
    fputs( "\n", stdout );
diff --git a/tests/test_log.cpp b/tests/test_log.cpp
index feb47ec..7a00bd4 100644
--- a/tests/test_log.cpp
+++ b/tests/test_log.cpp
@@ -40,7 +40,7 @@ TEST_CASE( "Log", "[default]" )
    SECTION( "Output" )
    {
       lWarning( "BOF: %d", 10 );
-      lLog( ELogCategory::Warning | EV_BOF, "E-BOF: %d", 10 );
+      lLog( ELogCategory::Warning, "E-BOF: %d", 10 );
    }
 }
 
