diff --git a/java_gen/templates/_imports.java b/java_gen/templates/_imports.java
index a4c564c..669db00 100644
--- a/java_gen/templates/_imports.java
+++ b/java_gen/templates/_imports.java
@@ -2,17 +2,16 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import org.openflow.protocol.*;
-import org.openflow.protocol.action.*;
-import org.openflow.protocol.meterband.*;
-import org.openflow.protocol.instruction.*;
-import org.openflow.protocol.match.*;
-import org.openflow.protocol.oxm.*;
-import org.openflow.protocol.queueprop.*;
-import org.openflow.types.*;
-import org.openflow.types.*;
-import org.openflow.util.*;
-import org.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.jboss.netty.buffer.ChannelBuffers;
 import com.google.common.collect.ImmutableList;
diff --git a/java_gen/templates/const.java b/java_gen/templates/const.java
index 11c09ab..b5c7ed0 100644
--- a/java_gen/templates/const.java
+++ b/java_gen/templates/const.java
@@ -33,7 +33,7 @@
 
 package ${package};
 
-import org.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.protocol.OFVersion;
 
 public enum ${class_name} {
 //:: for i, entry in enumerate(enum.entries):
diff --git a/java_gen/templates/const_serializer.java b/java_gen/templates/const_serializer.java
index 4e21070..5710f9c 100644
--- a/java_gen/templates/const_serializer.java
+++ b/java_gen/templates/const_serializer.java
@@ -33,10 +33,10 @@
 
 package ${package};
 
-import org.openflow.types.*;
+import org.projectfloodlight.openflow.types.*;
 import org.jboss.netty.buffer.ChannelBuffer;
-import org.openflow.exceptions.OFParseError;
-import org.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.exceptions.OFParseError;
+import org.projectfloodlight.openflow.protocol.OFVersion;
 import ${enum.package}.${enum.name};
 
 public class ${class_name} {
diff --git a/java_gen/templates/of_class.java b/java_gen/templates/of_class.java
index ec398e7..2dc88fb 100644
--- a/java_gen/templates/of_class.java
+++ b/java_gen/templates/of_class.java
@@ -39,11 +39,11 @@
 
 class ${impl_class} implements ${msg.interface.inherited_declaration()} {
     // version: ${version}
-    private final static byte WIRE_VERSION = ${version.int_version};
+    final static byte WIRE_VERSION = ${version.int_version};
 //:: if msg.is_fixed_length:
-    private final static int LENGTH = ${msg.length};
+    final static int LENGTH = ${msg.length};
 //:: else:
-    private final static int MINIMUM_LENGTH = ${msg.min_length};
+    final static int MINIMUM_LENGTH = ${msg.min_length};
 //:: #endif
 
 //:: for prop in msg.data_members:
diff --git a/java_gen/templates/of_factories.java b/java_gen/templates/of_factories.java
index 9225510..0044335 100644
--- a/java_gen/templates/of_factories.java
+++ b/java_gen/templates/of_factories.java
@@ -31,7 +31,7 @@
 
 //:: include('_autogen.java')
 
-package org.openflow.protocol;
+package org.projectfloodlight.openflow.protocol;
 
 //:: include("_imports.java")
 
@@ -40,7 +40,7 @@
         switch(version) {
             //:: for v in versions:
             case ${v.constant_version}:
-                return org.openflow.protocol.ver${v.of_version}.OFFactoryVer${v.of_version}.INSTANCE;
+                return org.projectfloodlight.openflow.protocol.ver${v.of_version}.OFFactoryVer${v.of_version}.INSTANCE;
             //:: #endfor
             default:
                 throw new IllegalArgumentException("Unknown version: "+version);
diff --git a/java_gen/templates/of_virtual_class.java b/java_gen/templates/of_virtual_class.java
index 33a6cd2..6237b8c 100644
--- a/java_gen/templates/of_virtual_class.java
+++ b/java_gen/templates/of_virtual_class.java
@@ -39,11 +39,11 @@
 
 abstract class ${msg.name} {
     // version: ${version}
-    private final static byte WIRE_VERSION = ${version.int_version};
+    final static byte WIRE_VERSION = ${version.int_version};
 //:: if msg.is_fixed_length:
-    private final static int LENGTH = ${msg.length};
+    final static int LENGTH = ${msg.length};
 //:: else:
-    private final static int MINIMUM_LENGTH = ${msg.min_length};
+    final static int MINIMUM_LENGTH = ${msg.min_length};
 //:: #endif
 
 
