diff --git a/java_gen/pre-written/src/main/java/org/openflow/types/MacAddress.java b/java_gen/pre-written/src/main/java/org/openflow/types/MacAddress.java
index 8806bb3..ec15f74 100644
--- a/java_gen/pre-written/src/main/java/org/openflow/types/MacAddress.java
+++ b/java_gen/pre-written/src/main/java/org/openflow/types/MacAddress.java
@@ -2,7 +2,6 @@
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.openflow.exceptions.OFParseError;
-import org.openflow.protocol.OFObject;
 import org.openflow.util.HexString;
 
 /**
@@ -11,7 +10,7 @@
  * @author Andreas Wundsam <andreas.wundsam@bigswitch.com>
  */
 
-public class MacAddress implements OFObject {
+public class MacAddress implements OFValueType {
     static final int MacAddrLen = 6;
     private final long rawValue;
 
@@ -77,17 +76,6 @@
         return MacAddrLen;
     }
 
-    public static MacAddress readFrom(final ChannelBuffer bb) throws OFParseError {
-        long raw = bb.readUnsignedInt() << 16 | bb.readUnsignedShort();
-        return MacAddress.of(raw);
-    }
-
-    @Override
-    public void writeTo(final ChannelBuffer bb) {
-        bb.writeInt((int) (rawValue >> 16));
-        bb.writeShort((int) rawValue & 0xFFFF);
-    }
-
     @Override
     public String toString() {
         return HexString.toHexString(rawValue, 6);
@@ -119,4 +107,29 @@
         return rawValue;
     }
 
+    public static final Serializer<MacAddress> SERIALIZER_V10 = new SerializerV10();
+    public static final Serializer<MacAddress> SERIALIZER_V11 = SERIALIZER_V10;
+    public static final Serializer<MacAddress> SERIALIZER_V12 = SERIALIZER_V10;
+    public static final Serializer<MacAddress> SERIALIZER_V13 = SERIALIZER_V10;
+
+    private static class SerializerV10 implements OFValueType.Serializer<MacAddress> {
+
+        @Override
+        public void writeTo(MacAddress value, ChannelBuffer c) {
+            c.writeInt((int) (value.rawValue >> 16));
+            c.writeShort((int) value.rawValue & 0xFFFF);
+        }
+
+        @Override
+        public MacAddress readFrom(ChannelBuffer c) throws OFParseError {
+            long raw = c.readUnsignedInt() << 16 | c.readUnsignedShort();
+            return MacAddress.of(raw);
+        }
+        
+        
+    }
+
+    
+    
+
 }
