diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
index 761c433..7c50aed 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
@@ -2,12 +2,7 @@
 
 public abstract class IPAddress<F extends IPAddress<F>> implements OFValueType<F> {
 
-    public enum IpVersion {
-        IPv4,
-        IPv6
-    }
-
-    public abstract IpVersion getIpVersion();
+    public abstract IPVersion getIpVersion();
 
     public static IPAddress<?> of(String ip) {
         if (ip.indexOf('.') != -1)
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddressWithMask.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddressWithMask.java
index fc4fa7d..11ef103 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddressWithMask.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddressWithMask.java
@@ -1,6 +1,5 @@
 package org.projectfloodlight.openflow.types;
 
-import org.projectfloodlight.openflow.types.IPAddress.IpVersion;
 
 public abstract class IPAddressWithMask<F extends IPAddress<F>> extends Masked<F> {
 
@@ -8,7 +7,7 @@
         super(value, mask);
     }
 
-    public abstract IpVersion getIpVersion();
+    public abstract IPVersion getIpVersion();
 
     public static IPAddressWithMask<?> of(String ip) {
         if (ip.indexOf('.') != -1)
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPVersion.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPVersion.java
new file mode 100644
index 0000000..5bfc6d8
--- /dev/null
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPVersion.java
@@ -0,0 +1,6 @@
+package org.projectfloodlight.openflow.types;
+
+public enum IPVersion {
+    IPv4,
+    IPv6
+}
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
index 95cfdca..3b07c17 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4Address.java
@@ -24,8 +24,8 @@
     }
 
     @Override
-    public IpVersion getIpVersion() {
-        return IpVersion.IPv4;
+    public IPVersion getIpVersion() {
+        return IPVersion.IPv4;
     }
 
     public static IPv4Address of(final byte[] address) {
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4AddressWithMask.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4AddressWithMask.java
index 63dba38..67bbce4 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4AddressWithMask.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv4AddressWithMask.java
@@ -1,6 +1,5 @@
 package org.projectfloodlight.openflow.types;
 
-import org.projectfloodlight.openflow.types.IPAddress.IpVersion;
 
 public class IPv4AddressWithMask extends IPAddressWithMask<IPv4Address> {
     public final static IPv4AddressWithMask NONE = of(IPv4Address.NONE, IPv4Address.NONE);
@@ -14,8 +13,8 @@
     }
 
     @Override
-    public IpVersion getIpVersion() {
-        return IpVersion.IPv4;
+    public IPVersion getIpVersion() {
+        return IPVersion.IPv4;
     }
 
     public static IPv4AddressWithMask of(int rawValue, int rawMask) {
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
index 1239b74..eb52f67 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6Address.java
@@ -29,8 +29,8 @@
     }
 
     @Override
-    public IpVersion getIpVersion() {
-        return IpVersion.IPv6;
+    public IPVersion getIpVersion() {
+        return IPVersion.IPv6;
     }
 
     public static IPv6Address of(final byte[] address) {
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6AddressWithMask.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6AddressWithMask.java
index f918d1c..727daf6 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6AddressWithMask.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPv6AddressWithMask.java
@@ -3,8 +3,6 @@
 import java.math.BigInteger;
 import java.util.Arrays;
 
-import org.projectfloodlight.openflow.types.IPAddress.IpVersion;
-
 public class IPv6AddressWithMask extends IPAddressWithMask<IPv6Address> {
     public final static IPv6AddressWithMask NONE = of(IPv6Address.NONE, IPv6Address.NONE);
 
@@ -13,8 +11,8 @@
     }
 
     @Override
-    public IpVersion getIpVersion() {
-        return IpVersion.IPv6;
+    public IPVersion getIpVersion() {
+        return IPVersion.IPv6;
     }
 
     public static IPv6AddressWithMask of(IPv6Address value, IPv6Address mask) {
