diff --git a/compiler/2014/C_CodeGen.jrag b/compiler/2014/C_CodeGen.jrag
index 11c94d5706049c290d24e8e1f09dbc2f6665b499..b762e588c3278555ad9d52685816a8b1b02bb084 100644
--- a/compiler/2014/C_CodeGen.jrag
+++ b/compiler/2014/C_CodeGen.jrag
@@ -47,10 +47,6 @@ aspect C_CodeGenEnv {
     private boolean rootIsPointer;
     private int rootLevel;
 
-    public boolean versionHasMetaData() {
-      return version != 2006;
-    }
-
     private C_env(String qualid, String lcName, String rawPrefix, 
 		  int indent, int depth, C_printer printer,
                   int nestedLevel, int version)
@@ -1141,7 +1137,7 @@ aspect C_Encoder {
     env.indent();
     env.println("//TODO: add error handling for dependencies");
 
-    C_emitUserTypeDeps(env, null, true); 
+//    C_emitUserTypeDeps(env, null, true); 
 
     if(!isSampleDecl() || hasDependencies()) {
       env.println("return e->type_register(");
@@ -1171,7 +1167,7 @@ aspect C_Encoder {
     env.println(")");
     env.println("{");
     env.indent();
-    C_emitUserTypeDeps(env, null, false); //XXX HERE BE DRAGONS
+//    C_emitUserTypeDeps(env, null, false); //XXX HERE BE DRAGONS
                                           //currently set to false to turn off
                                           //outputting of code
     env.println("int result = e->sample_register(");
@@ -1181,17 +1177,17 @@ aspect C_Encoder {
     env.println("(labcomm2014_encoder_function)encode_" + env.prefix + getName());
     env.unindent();
     env.println(");");
-    env.println("if(result >= 0) {\n");
-    env.indent();
-    env.println("labcomm2014_encoder_type_register_" + env.prefix + getName()+"(e);");
-    env.println("e->type_bind(");
-    env.indent();
-    env.println("e,");
-    env.println("&signature_" + env.prefix + getName() + ",");
-    env.println( (hasDependencies() ? "1" : "0")  + ");");
-    env.unindent();
-    env.println("}");
-    env.unindent();
+//    env.println("if(result >= 0) {\n");
+//    env.indent();
+//    env.println("labcomm2014_encoder_type_register_" + env.prefix + getName()+"(e);");
+//    env.println("e->type_bind(");
+//    env.indent();
+//    env.println("e,");
+//    env.println("&signature_" + env.prefix + getName() + ",");
+//    env.println( (hasDependencies() ? "1" : "0")  + ");");
+//    env.unindent();
+//    env.println("}");
+//    env.unindent();
     env.println("return result;");
     env.unindent();
     env.println("}");
@@ -1235,41 +1231,41 @@ aspect C_EncoderIoctl {
 
 }
 
-aspect C_TypeDependencies {
-  public void Decl.C_emitUserTypeDeps(C_env env, String via, boolean outputCode) {
-    if( hasDependencies() ) {
-        Iterator<Decl> it = type_dependencies().iterator();
-        while(it.hasNext()) {
-            Decl t = it.next();
-
-            t.C_emitUserTypeDeps(env, t.getName(), outputCode);
-            if(outputCode) {
-               env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);");
-            } else {  // Just output a comment
-	        String refpath = (via == null) ? "directly" : "indirectly via "+via;
-	       env.println(" //Depends ("+refpath+") on "+t.getName() );
-            }
-        }
-    } 
-  }
-
-  public void Decl.C_emitUserTypeRefs(C_env env, String via, boolean outputCode) {
-    if( isReferenced() ) {
-        Iterator<Decl> it = type_references().iterator();
-        while(it.hasNext()) {
-            Decl t = it.next();
-
-            t.C_emitUserTypeRefs(env, t.getName(), outputCode);
-            if(outputCode) {
-               env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);");
-            } else {  // Just output a comment
-	        String refpath = (via == null) ? "directly" : "indirectly via "+via;
-	       env.println(" //Is referenced ("+refpath+")  by "+t.getName() );
-            }
-        }
-    } 
-  }
-}
+//aspect C_TypeDependencies {
+//  public void Decl.C_emitUserTypeDeps(C_env env, String via, boolean outputCode) {
+//    if( hasDependencies() ) {
+//        Iterator<Decl> it = type_dependencies().iterator();
+//        while(it.hasNext()) {
+//            Decl t = it.next();
+//
+//            t.C_emitUserTypeDeps(env, t.getName(), outputCode);
+//            if(outputCode) {
+//               env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);");
+//            } else {  // Just output a comment
+//	        String refpath = (via == null) ? "directly" : "indirectly via "+via;
+//	       env.println(" //Depends ("+refpath+") on "+t.getName() );
+//            }
+//        }
+//    } 
+//  }
+//
+//  public void Decl.C_emitUserTypeRefs(C_env env, String via, boolean outputCode) {
+//    if( isReferenced() ) {
+//        Iterator<Decl> it = type_references().iterator();
+//        while(it.hasNext()) {
+//            Decl t = it.next();
+//
+//            t.C_emitUserTypeRefs(env, t.getName(), outputCode);
+//            if(outputCode) {
+//               env.println("labcomm2014_encoder_type_register_"+env.prefix + t.getName()+"(e);");
+//            } else {  // Just output a comment
+//	        String refpath = (via == null) ? "directly" : "indirectly via "+via;
+//	       env.println(" //Is referenced ("+refpath+")  by "+t.getName() );
+//            }
+//        }
+//    } 
+//  }
+//}
 
 aspect C_Signature {
 
diff --git a/compiler/2014/Java_CodeGen.jrag b/compiler/2014/Java_CodeGen.jrag
index 456ada22f63d8ec25551ae0481d7574776875244..f2d74415d734e627d2643945cff15eabf219ccc4 100644
--- a/compiler/2014/Java_CodeGen.jrag
+++ b/compiler/2014/Java_CodeGen.jrag
@@ -329,13 +329,13 @@ aspect Java_Class {
   public void Decl.Java_emitRegisterEncoder(Java_env env) {
     env.println("public static void register(Encoder e) throws IOException {");
     env.indent();
-    env.println("register(e, true);");
-    env.unindent();
-    env.println("}");
-    env.println();
-    env.println("public static void register(Encoder e, boolean sendMetaData) throws IOException {");
-    env.indent();
-    Java_emitUserTypeDeps(env, null, true);
+//    env.println("register(e, true);");
+//    env.unindent();
+//    env.println("}");
+//    env.println();
+//    env.println("public static void register(Encoder e, boolean sendMetaData) throws IOException {");
+//    env.indent();
+//    Java_emitUserTypeDeps(env, null, true);
     env.println("e.register(dispatcher);");
     env.unindent();
     env.println("}");
@@ -382,11 +382,11 @@ aspect Java_Class {
 
       //if(hasDependencies() || isReferenced()) {
       //if( getDataType().isUserType() && isReferenced()) {
-      if( isReferenced()) {
-        Java_emitRegisterEncoder(env);
-        Java_emitDispatcher(env, false);
-      }
-      Java_emitSignature(env);
+//      if( isReferenced()) {
+//        Java_emitRegisterEncoder(env);
+//        Java_emitDispatcher(env, false);
+//      }
+//      Java_emitSignature(env);
 
       env.println("}");
       env.unindent();
@@ -540,17 +540,17 @@ aspect Java_Class {
     env.unindent();
     env.println("}");
     env.println();
-    env.println("public boolean isSample() {");
-    env.indent();
-    env.println("return "+isSample+";");
-    env.unindent();
-    env.println("}");
-    env.println("public boolean hasDependencies() {");
-    env.indent();
-    env.println("return "+hasDependencies()+";");
-    env.unindent();
-    env.println("}");
-    env.println();
+//    env.println("public boolean isSample() {");
+//    env.indent();
+//    env.println("return "+isSample+";");
+//    env.unindent();
+//    env.println("}");
+//    env.println("public boolean hasDependencies() {");
+//    env.indent();
+//    env.println("return "+hasDependencies()+";");
+//    env.unindent();
+//    env.println("}");
+//    env.println();
     env.println("/** return the flat signature. */");
     env.println("public byte[] getSignature() {");
     env.indent();
diff --git a/examples/Makefile b/examples/Makefile
index fc39c55448fc0246f0ddbba0c05e24c7bc2e0b1d..a6f964bba08cfb1835964fc377664afbf7ad2efc 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -1,5 +1,6 @@
 SUBDIRS=duck_typing dynamic jgrafchart robot simple tcp \
-	twoway user_types wiki_example
+	twoway wiki_example
+# user_types # Disabled until typeefs are reimplemented in library
 
 .PHONY: all
 
@@ -13,11 +14,11 @@ UNAME_S=$(shell uname -s)
 test:
 	echo More to be done...
 ifeq ($(UNAME_S),Darwin)
-	$(MAKE) -C user_types all 
+#	$(MAKE) -C user_types all 
 else	
 	cd simple ; sh compile.sh && sh run.sh
 	$(MAKE) -C  wiki_example test
-	$(MAKE) -C user_types test 
+#	$(MAKE) -C user_types test 
 endif	
 	$(MAKE) -C duck_typing test
 	$(MAKE) -C twoway test 
diff --git a/lib/c/2014/test/test_labcomm.c b/lib/c/2014/test/test_labcomm.c
index 0b0fbf36fe0caa3c663654ba9a75bb5509b562f7..81cc07b68ed6fa4058fbf40694b486cb375fc458 100644
--- a/lib/c/2014/test/test_labcomm.c
+++ b/lib/c/2014/test/test_labcomm.c
@@ -254,10 +254,6 @@ static int do_test(int argc, char *argv[])
 						NULL);
   struct expect expect_registration[] = {
     { "Sampledef", -1, test_decode_one, decoder },
-#ifdef SHOULD_THIS_BE_REMOVED
-    { "Typedef", -1, test_decode_one, decoder },
-#endif
-    { "Binding", -1, test_decode_one, decoder },
     { 0, 0, 0 }
   };
   expect = expect_registration;
diff --git a/lib/c/2014/test/test_labcomm_generated_encoding.c b/lib/c/2014/test/test_labcomm_generated_encoding.c
index 6b880d46c2183a424b2e6cba5147269f669adee8..868b1b6f49cdc6f79f9f6b2673720bd18056f043 100644
--- a/lib/c/2014/test/test_labcomm_generated_encoding.c
+++ b/lib/c/2014/test/test_labcomm_generated_encoding.c
@@ -213,24 +213,19 @@ int main(void)
   /* Register twice to make sure that only one registration gets encoded */
   labcomm2014_encoder_register_generated_encoding_V(encoder);
   labcomm2014_encoder_register_generated_encoding_V(encoder);
-  EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00,
-           0x04, 0x08, VARIABLE(1), 0x03, 'v', '_', 't', 0x02, 0x11, 0x00,
-           0x04, 0x05, VARIABLE(2), 0x01, 'V', 0x01, VARIABLE(1),
-           0x05, 0x02, VARIABLE(0), VARIABLE(2) });
+  EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00 });
 
   labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
   /* Register twice to make sure that only one registration gets encoded */
   labcomm2014_encoder_register_generated_encoding_B(encoder);
   labcomm2014_encoder_register_generated_encoding_B(encoder);
-  EXPECT({ 0x02, 0x05, VARIABLE(3), 0x01, 'B', 0x01, 0x21,
-           0x05, 0x02, VARIABLE(3), LABCOMM_BIND_SELF });
+  EXPECT({ 0x02, 0x05, VARIABLE(3), 0x01, 'B', 0x01, 0x21 });
 
   labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
   /* Register twice to make sure that only one registration gets encoded */
   labcomm2014_encoder_register_generated_encoding_R(encoder);
   labcomm2014_encoder_register_generated_encoding_R(encoder);
-  EXPECT({ 0x02, 0x08, VARIABLE(4), 0x01, 'R', 0x04, 0x10, 0x01, 0x04, 0x28,
-           0x05, 0x02, VARIABLE(4), LABCOMM_BIND_SELF });
+  EXPECT({ 0x02, 0x08, VARIABLE(4), 0x01, 'R', 0x04, 0x10, 0x01, 0x04, 0x28 });
 
   labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
   /* Register twice to make sure that only one registration gets encoded */
diff --git a/lib/c/2014/test/test_labcomm_renaming_encoder.c b/lib/c/2014/test/test_labcomm_renaming_encoder.c
index ac6c19bb3b09095f5a7d2b5e0248d6796e734055..f5bbd88f1fd0af0be446d9c8f26896f885d0787c 100644
--- a/lib/c/2014/test/test_labcomm_renaming_encoder.c
+++ b/lib/c/2014/test/test_labcomm_renaming_encoder.c
@@ -235,25 +235,17 @@ static int do_test(int argc, char *argv[])
   /* Register twice to make sure that only one registration gets encoded */
   labcomm2014_encoder_register_generated_encoding_V(encoder);
   labcomm2014_encoder_register_generated_encoding_V(encoder);
-  EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00,
-           0x04, 0x08, VARIABLE(1), 0x03, 'v', '_', 't', 0x02, 0x11, 0x00,
-           0x04, 0x05, VARIABLE(2), 0x01, 'V', 0x01, VARIABLE(1),
-           0x05, 0x02, VARIABLE(0), VARIABLE(2) });
+  EXPECT({ 0x02, 0x06, VARIABLE(0), 0x01, 'V', 0x02, 0x11, 0x00 });
 
   labcomm2014_encoder_ioctl(prefix, IOCTL_WRITER_RESET);
   labcomm2014_encoder_register_generated_encoding_V(prefix);
   labcomm2014_encoder_register_generated_encoding_V(prefix);
-  EXPECT({ 0x02, 0x08, VARIABLE(3), 0x03, 'p', '.', 'V', 0x02, 0x11, 0x00,
-           0x04, 0x07, VARIABLE(4), 0x03, 'p', '.', 'V', 0x01, VARIABLE(2),
-           0x05, 0x02, VARIABLE(3), VARIABLE(4) });
+  EXPECT({ 0x02, 0x08, VARIABLE(3), 0x03, 'p', '.', 'V', 0x02, 0x11, 0x00 });
 
   labcomm2014_encoder_ioctl(suffix, IOCTL_WRITER_RESET);
   labcomm2014_encoder_register_generated_encoding_V(suffix);
   labcomm2014_encoder_register_generated_encoding_V(suffix);
-  EXPECT({ 0x02, 0x0a, VARIABLE(5), 0x05, 'p', '.', 'V', '.', 's', 0x02, 0x11, 0x00,
-           0x04, 0x07, VARIABLE(6), 0x03, 'V', '.', 's', 0x01, VARIABLE(2), /* BOGUS */
-           0x04, 0x09, VARIABLE(7), 0x05, 'p', '.', 'V', '.', 's', 0x01, VARIABLE(2),
-           0x05, 0x02, VARIABLE(5), VARIABLE(7) });
+  EXPECT({ 0x02, 0x0a, VARIABLE(5), 0x05, 'p', '.', 'V', '.', 's', 0x02, 0x11, 0x00 });
 
 
   labcomm2014_encoder_ioctl(encoder, IOCTL_WRITER_RESET);
diff --git a/lib/java/Makefile b/lib/java/Makefile
index c9fd3f92d633dff4ce8cc20ca44efba8a44afc6e..a5939656b14a31f96ef102632bbf85a94131c73b 100644
--- a/lib/java/Makefile
+++ b/lib/java/Makefile
@@ -10,14 +10,10 @@ MODULES=Constant \
 	SampleDispatcher \
 	SampleHandler \
 	SampleType \
-	BuiltinType \
-	TypeDef \
-	TypeBinding \
-	ASTbuilder \
-	TypeDefParser \
 	Writer \
 	WriterWrapper
 
+
 .PHONY: all
 all: labcomm2014.jar
 
diff --git a/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java b/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java
index af264e6e36583735463493f7566fa7d95ebd359a..d6d2cf7722a13970e28d73f4da05871046730fc2 100644
--- a/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java
+++ b/lib/java/se/lth/control/labcomm2014/DecoderRegistry.java
@@ -101,20 +101,6 @@ public class DecoderRegistry {
 
   public synchronized void add(SampleDispatcher dispatcher,
 			       SampleHandler handler) throws IOException{
- //XXX kludge: special handling of predefined types
-    if(dispatcher.getSampleClass() == TypeDef.class){
-      Entry e = new Entry(dispatcher, handler);
-      e.setIndex(Constant.TYPE_DEF);
-      byClass.put(dispatcher.getSampleClass(), e);
-      byIndex.put(Integer.valueOf(Constant.TYPE_DEF), e);
-      //System.out.println("LCDecoderRegistry.add("+e.getName()+", "+e.getIndex()+")");
-    } else if(dispatcher.getSampleClass() == TypeBinding.class){
-      Entry e = new Entry(dispatcher, handler);
-      e.setIndex(Constant.TYPE_BINDING);
-      byClass.put(dispatcher.getSampleClass(), e);
-      byIndex.put(Integer.valueOf(Constant.TYPE_BINDING), e);
-      //System.out.println("LCDecoderRegistry.add("+e.getName()+", "+e.getIndex()+")");
-    } else {
     Entry e = byClass.get(dispatcher.getSampleClass());
     if (e != null) {
       e.check(dispatcher.getName(), dispatcher.getSignature());
@@ -133,7 +119,6 @@ public class DecoderRegistry {
 	byClass.put(dispatcher.getSampleClass(), e);
       }
     }
-   }
   }
 
   public synchronized void add(int index, 
diff --git a/lib/java/se/lth/control/labcomm2014/EncoderChannel.java b/lib/java/se/lth/control/labcomm2014/EncoderChannel.java
index b6c25bb4ea54176693820c0a78a09ba31f678678..4f075489f454dc48733db7dcb1d8c220baa3603e 100644
--- a/lib/java/se/lth/control/labcomm2014/EncoderChannel.java
+++ b/lib/java/se/lth/control/labcomm2014/EncoderChannel.java
@@ -53,14 +53,6 @@ public class EncoderChannel implements Encoder {
             encodeByte(signature[i]);
         }
         end(null);
-        int tindex;
-        if(dispatcher.hasDependencies()){
-            tindex = registerTypeDef(dispatcher);
-        } else {
-            tindex = Constant.TYPE_BIND_SELF;
-        }
-        bindType(index, tindex);
-
   }
 
   private static class WrappedEncoder extends EncoderChannel{
diff --git a/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java b/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java
index 0d6b8b44951c3eab494636d10fc3e1c78e91c509..7a0798180a5d4ab9cb050ce96105e1dfc5548359 100644
--- a/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java
+++ b/lib/java/se/lth/control/labcomm2014/SampleDispatcher.java
@@ -13,10 +13,6 @@ public interface SampleDispatcher <T extends SampleType>{
   public void decodeAndHandle(Decoder decoder,
 			      SampleHandler handler) throws Exception;
 
-  /** @return true if the type depends on one or more typedefs
-   */
-  public boolean hasDependencies();
-
   public void encodeTypeDef(Encoder e, int index) throws IOException;
 
   /** return the tag SAMPLE_DEF or TYPE_DEF, for use
diff --git a/lib/java/se/lth/control/labcomm2014/ASTbuilder.java b/lib/java/se/lth/control/typedef/ASTbuilder.java
similarity index 100%
rename from lib/java/se/lth/control/labcomm2014/ASTbuilder.java
rename to lib/java/se/lth/control/typedef/ASTbuilder.java
diff --git a/lib/java/se/lth/control/labcomm2014/BuiltinType.java b/lib/java/se/lth/control/typedef/BuiltinType.java
similarity index 100%
rename from lib/java/se/lth/control/labcomm2014/BuiltinType.java
rename to lib/java/se/lth/control/typedef/BuiltinType.java
diff --git a/lib/java/se/lth/control/labcomm2014/TypeBinding.java b/lib/java/se/lth/control/typedef/TypeBinding.java
similarity index 100%
rename from lib/java/se/lth/control/labcomm2014/TypeBinding.java
rename to lib/java/se/lth/control/typedef/TypeBinding.java
diff --git a/lib/java/se/lth/control/labcomm2014/TypeDef.java b/lib/java/se/lth/control/typedef/TypeDef.java
similarity index 100%
rename from lib/java/se/lth/control/labcomm2014/TypeDef.java
rename to lib/java/se/lth/control/typedef/TypeDef.java
diff --git a/lib/java/se/lth/control/labcomm2014/TypeDefParser.java b/lib/java/se/lth/control/typedef/TypeDefParser.java
similarity index 100%
rename from lib/java/se/lth/control/labcomm2014/TypeDefParser.java
rename to lib/java/se/lth/control/typedef/TypeDefParser.java
diff --git a/lib/python/labcomm2014/LabComm.py b/lib/python/labcomm2014/LabComm.py
index abf071b742f1571105b087a95b279b3495ba6110..8d05a050ded1cedeb4426830dd0047fddcb25c3a 100644
--- a/lib/python/labcomm2014/LabComm.py
+++ b/lib/python/labcomm2014/LabComm.py
@@ -478,9 +478,11 @@ class typedef(sampledef_or_sampleref_or_typedef):
     type_name = 'typedef'
 
     def encode_decl(self, encoder):
+        raise Exception("typedef's are disabled")
         self.decl.encode_decl(encoder)
 
     def encode(self, encoder, value):
+        raise Exception("typedef's are disabled")
         self.decl.encode(encoder, value)
 
 class array(type_decl):
@@ -923,14 +925,17 @@ class Decoder(Codec):
             decl = self.index_to_decl[index].decode_decl(self)
             value = None
         elif index == i_TYPE_DEF:
+            raise Exception("typedef's are disabled")
             self.skip_or_raise(length, index) 
             decl = None
             value = None
         elif index == i_TYPE_BINDING:
+            raise Exception("typebindings's are disabled")
             self.skip_or_raise(length, index) 
             decl = None
             value = None
         elif index == i_PRAGMA:
+            raise Exception("pragma's are disabled")
             self.skip_or_raise(length, index) 
             decl = None
             value = None