diff --git a/lib/c/labcomm.c b/lib/c/labcomm.c
index 2b982e6f852e2c0098980bd43cbba198119f7ee2..bb487c0e988ed11dd9c56f3ed5700cb0ca9d47d0 100644
--- a/lib/c/labcomm.c
+++ b/lib/c/labcomm.c
@@ -355,6 +355,9 @@ static int signature_writer(
     } break;
     case labcomm_writer_available: {
     } break;
+    case labcomm_writer_send_signature:
+    case labcomm_writer_user_action:
+      return -ENOTSUP;  //HERE BE DRAGONS: should probably be cleaned up 
   }
   return 0;
 
diff --git a/lib/c/labcomm.h b/lib/c/labcomm.h
index 6d67fb2e125adae13bf3180b7a7cab042f4c70ea..9770188e3b4edc07fabbe96833199526642cc5ca 100644
--- a/lib/c/labcomm.h
+++ b/lib/c/labcomm.h
@@ -124,13 +124,14 @@ void labcomm_decoder_free(
  */
 
 typedef enum { 
-  labcomm_writer_alloc, 
-  labcomm_writer_free,
-  labcomm_writer_start, 
-  labcomm_writer_continue, 
-  labcomm_writer_end, 
-  labcomm_writer_available,
-  labcomm_writer_send_signature
+  labcomm_writer_alloc,          // no args
+  labcomm_writer_free,           // no args
+  labcomm_writer_start,          // no args
+  labcomm_writer_continue,       // no args
+  labcomm_writer_end,            // no args
+  labcomm_writer_available,      // no args
+  labcomm_writer_send_signature, // args = (labcomm_signature_t*, struct labcomm_encoder*)
+  labcomm_writer_user_action	 // args = (int user_action, ... defined by the writer)
 } labcomm_writer_action_t;
 
 typedef struct labcomm_writer {
diff --git a/lib/c/labcomm_fd_reader_writer.c b/lib/c/labcomm_fd_reader_writer.c
index 7eb68bddb9167d80866460e7cd58dc329d6b7b93..7f3e3e39d3c8c6be95d9fef6997070fda34f0a33 100644
--- a/lib/c/labcomm_fd_reader_writer.c
+++ b/lib/c/labcomm_fd_reader_writer.c
@@ -112,6 +112,9 @@ int labcomm_fd_writer(
       labcomm_encode_signature(e, signature);
  
     } break;
+    case labcomm_writer_user_action: {
+      result = -ENOTSUP;
+    } break;
   }
   return result;
 }