diff --git a/compiler/CS_CodeGen.jrag b/compiler/CS_CodeGen.jrag
index a02f45533e371c6584df576fd608c8d9d80c6f40..f911ecf4d43527b1ea872ec5de9d9c49cf0160ed 100644
--- a/compiler/CS_CodeGen.jrag
+++ b/compiler/CS_CodeGen.jrag
@@ -776,13 +776,15 @@ aspect CS_Info {
 
   public void TypeDecl.CS_info(CS_env env, String namespace) {
     env.print(";C#;typedef;" + namespace + getName() + ";");
-    getType().CS_emitType(env);
+    getType().CS_emitType(env) ;
+    env.print(";not_applicable_for_Java");
     env.println();
   }
 
   public void SampleDecl.CS_info(CS_env env, String namespace) {
     env.print(";C#;sample;" + namespace + getName() + ";");
     getType().CS_emitType(env);
+    env.print(";not_applicable_for_Java");
     env.println();
   }
 
diff --git a/compiler/C_CodeGen.jrag b/compiler/C_CodeGen.jrag
index 228ebd62e8bcfe43703f76ee562a0a67d4b330af..e2e04baac6435830a280165aa77d055d512aa071 100644
--- a/compiler/C_CodeGen.jrag
+++ b/compiler/C_CodeGen.jrag
@@ -1163,12 +1163,23 @@ aspect C_Info {
 
   public void TypeDecl.C_info(C_env env) {
     env.println(",C,typedef," + env.prefix + getName() + "," + 
-                 env.prefix + getName());
+                 env.prefix + getName() + "," +
+                 C_info_type_or_void(env.prefix));
   }
 
   public void SampleDecl.C_info(C_env env) {
     env.println(",C,sample," + env.prefix + getName() + "," + 
-                env.prefix + getName());
+                 env.prefix + getName() + "," +
+                 C_info_type_or_void(env.prefix));
   }
 
+  // make void types explicitly as they require special treatment
+  // in encoder/decoder calls
+  protected String Decl.C_info_type_or_void(String prefix) {
+    if(isVoid() ) {
+      return "void";
+    } else {
+      return prefix + getName() ;
+    }
+  }
 }
diff --git a/compiler/Java_CodeGen.jrag b/compiler/Java_CodeGen.jrag
index 96dffe3ff0612806a0f2e1c34739975b6bd53d2a..b01ff8f02e5052fd9979c69ed60bee9e32768586 100644
--- a/compiler/Java_CodeGen.jrag
+++ b/compiler/Java_CodeGen.jrag
@@ -869,13 +869,15 @@ aspect Java_Info {
 
   public void TypeDecl.Java_info(Java_env env) {
     env.print(",Java,typedef," + getName() + ",");
-    getType().Java_emitType(env);
+    getType().Java_emitType(env); 
+    env.print(",not_applicable_for_Java");
     env.println();
   }
 
   public void SampleDecl.Java_info(Java_env env) {
     env.print(",Java,sample," + getName() + ",");
     getType().Java_emitType(env);
+    env.print(",not_applicable_for_Java");
     env.println();
   }
 
diff --git a/lib/c/test/test_labcomm_generated_encoding.c b/lib/c/test/test_labcomm_generated_encoding.c
index 79aeb4307575f6d6d98f6c9a2215e80eb340e05d..670b8247472c127839eaabf6340e438d538d6c81 100644
--- a/lib/c/test/test_labcomm_generated_encoding.c
+++ b/lib/c/test/test_labcomm_generated_encoding.c
@@ -179,7 +179,8 @@ void dump_encoder(struct labcomm_encoder *encoder)
 
 int main(void)
 {
-  generated_encoding_V V;
+  //no longer used
+  //generated_encoding_V V;
   generated_encoding_B B = 1;
 
   struct labcomm_encoder *encoder = labcomm_encoder_new(
@@ -199,7 +200,8 @@ int main(void)
   EXPECT({0x02, -1, 0x01, 'B', 0x21});
 
   labcomm_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
-  labcomm_encode_generated_encoding_V(encoder, &V);
+  // was: labcomm_encode_generated_encoding_V(encoder, &V);
+  labcomm_encode_generated_encoding_V(encoder);
   EXPECT({-1});
 
   labcomm_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
diff --git a/test/relay_gen_c.py b/test/relay_gen_c.py
index 6f4da2ca1b7e1d621a5e52d0e7e1052c33edbb3b..837cf7243b0c4ac383b43b6ad93cf5f1cdd15757 100755
--- a/test/relay_gen_c.py
+++ b/test/relay_gen_c.py
@@ -16,13 +16,14 @@ if __name__ == '__main__':
     f = open(sys.argv[1])
     sample = []
     for l in map(lambda s: s.strip(), f):
-        lang,kind,func,arg = l[1:].split(l[0])
+        lang,kind,func,arg,stype = l[1:].split(l[0])
         if lang == 'C' and kind == 'sample':
-            sample.append((func, arg))
+            sample.append((func, arg, stype))
             pass
         pass
     result = []
     result.extend(split_match('^[^|]*\|(.*)$', """
+      |// generated by relay_gen_c.py
       |#include <sys/types.h>
       |#include <sys/stat.h>
       |#include <fcntl.h>
@@ -34,13 +35,19 @@ if __name__ == '__main__':
       |#include <labcomm_fd_writer.h>
       |#include "c_code.h"
     """))
-    for func,arg in sample:
+    for func,arg,stype in sample:
         result.extend(split_match('^[^|]*\|(.*)$', """
           |void handle_%(func)s(%(arg)s *v, void *context)
           |{
           |  struct labcomm_encoder *e = context;
-          |  labcomm_encode_%(func)s(e, v);
-          |}""" % { 'func': func, 'arg': arg }))
+          |  labcomm_encode_%(func)s(e%(valargstr)s);
+          |}""" % { 'func': func, 'arg': arg, 'valargstr': '' if stype == "void" else', v' }))
+#        result.extend(split_match('^[^|]*\|(.*)$', """
+#          |void handle_%(func)s(%(arg)s *v, void *context)
+#          |{
+#          |  struct labcomm_encoder *e = context;
+#          |  labcomm_encode_%(func)s(e, v);
+#          |}""" % { 'func': func, 'arg': arg }))
         pass
     result.extend(split_match('^[^|]*\|(.*)$', """
       |int main(int argc, char *argv[]) {
@@ -64,7 +71,7 @@ if __name__ == '__main__':
       |                           labcomm_default_memory,
       |                           labcomm_default_scheduler);
     """))
-    for func,arg in sample:
+    for func,arg,stype in sample:
         result.extend(split_match('^[^|]*\|(.*)$', """
           |  labcomm_encoder_register_%(func)s(e);
           |  labcomm_decoder_register_%(func)s(d, handle_%(func)s, e);
diff --git a/test/relay_gen_cs.py b/test/relay_gen_cs.py
index 06a4e659507c21cf82071af63c1aad66abffb435..68fdc4de6db96a45ae1d75fc263fd3ebc498aafe 100755
--- a/test/relay_gen_cs.py
+++ b/test/relay_gen_cs.py
@@ -16,7 +16,7 @@ if __name__ == '__main__':
     f = open(sys.argv[1])
     sample = []
     for l in map(lambda s: s.strip(), f):
-        lang,kind,func,arg = l[1:].split(l[0])
+        lang,kind,func,arg,dummy = l[1:].split(l[0])
         if lang == 'C#' and kind == 'sample':
             sample.append((func, arg))
             pass
diff --git a/test/relay_gen_java.py b/test/relay_gen_java.py
index 9c0869bbac9fcb143051897784603655be27c27f..93644bc2ed679087264766594acece7467f04eaf 100755
--- a/test/relay_gen_java.py
+++ b/test/relay_gen_java.py
@@ -16,7 +16,7 @@ if __name__ == '__main__':
     f = open(sys.argv[1])
     sample = []
     for l in map(lambda s: s.strip(), f):
-        lang,kind,func,arg = l[1:].split(l[0])
+        lang,kind,func,arg,dummy = l[1:].split(l[0])
         if lang == 'Java' and kind == 'sample':
             sample.append((func, arg))
             pass