diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/OFInstrumentationOptions.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/OFInstrumentationOptions.java
deleted file mode 100644
index 97d7165..0000000
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/OFInstrumentationOptions.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.projectfloodlight.openflow.protocol;
-
-public final class OFInstrumentationOptions {
-    public static final boolean TRACE_READS = false;
-
-    private OFInstrumentationOptions() { }
-}
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java
index f024fa3..1a1ac6a 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/ChannelUtils.java
@@ -4,7 +4,6 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.projectfloodlight.openflow.exceptions.OFParseError;
-import org.projectfloodlight.openflow.protocol.OFInstrumentationOptions;
 import org.projectfloodlight.openflow.protocol.OFMessageReader;
 import org.projectfloodlight.openflow.protocol.Writeable;
 import org.slf4j.Logger;
@@ -60,14 +59,12 @@
     public static <T> List<T> readList(ChannelBuffer bb, int length, OFMessageReader<T> reader) throws OFParseError {
         int end = bb.readerIndex() + length;
         Builder<T> builder = ImmutableList.<T>builder();
-        if(OFInstrumentationOptions.TRACE_READS)
-            if(logger.isTraceEnabled())
-                logger.trace("readList(length={}, reader={})", length, reader.getClass());
+        if(logger.isTraceEnabled())
+            logger.trace("readList(length={}, reader={})", length, reader.getClass());
         while(bb.readerIndex() < end) {
             T read = reader.readFrom(bb);
-            if(OFInstrumentationOptions.TRACE_READS)
-                if(logger.isTraceEnabled())
-                    logger.trace("readList: read={}, left={}", read, end - bb.readerIndex());
+            if(logger.isTraceEnabled())
+                logger.trace("readList: read={}, left={}", read, end - bb.readerIndex());
             builder.add(read);
         }
         if(bb.readerIndex() != end) {
diff --git a/java_gen/templates/of_class.java b/java_gen/templates/of_class.java
index ee38beb..36d407c 100644
--- a/java_gen/templates/of_class.java
+++ b/java_gen/templates/of_class.java
@@ -220,9 +220,8 @@
                 return null;
             }
             //:: if genopts.instrument:
-            if(OFInstrumentationOptions.TRACE_READS)
-                if(logger.isTraceEnabled())
-                    logger.trace("readFrom - length={}", ${prop.name});
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", ${prop.name});
             //:: #endif
 //:: elif prop.is_fixed_value:
             // fixed value property ${prop.name} == ${prop.value}
@@ -255,16 +254,14 @@
                          [ prop.name for prop in msg.data_members])}
                     );
             //:: if genopts.instrument:
-            if(OFInstrumentationOptions.TRACE_READS)
-                if(logger.isTraceEnabled())
-                    logger.trace("readFrom - read={}", ${msg.variable_name});
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", ${msg.variable_name});
             //:: #endif
             return ${msg.variable_name};
             //:: else:
             //:: if genopts.instrument:
-            if(OFInstrumentationOptions.TRACE_READS)
-                if(logger.isTraceEnabled())
-                    logger.trace("readFrom - returning shared instance={}", INSTANCE);
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - returning shared instance={}", INSTANCE);
             //:: #endif
             return INSTANCE;
             //:: #endif
