diff --git a/utils/misc/src/main/java/org/onlab/packet/ARP.java b/utils/misc/src/main/java/org/onlab/packet/ARP.java
index df31142..f5f52c4 100644
--- a/utils/misc/src/main/java/org/onlab/packet/ARP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/ARP.java
@@ -37,7 +37,7 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
+ *
  */
 public class ARP extends BasePacket {
     public static final short HW_TYPE_ETHERNET = 0x1;
diff --git a/utils/misc/src/main/java/org/onlab/packet/BasePacket.java b/utils/misc/src/main/java/org/onlab/packet/BasePacket.java
index d6ae9b4..c893ef0 100644
--- a/utils/misc/src/main/java/org/onlab/packet/BasePacket.java
+++ b/utils/misc/src/main/java/org/onlab/packet/BasePacket.java
@@ -34,7 +34,7 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
+ *
  */
 public abstract class BasePacket implements IPacket {
     protected IPacket parent;
diff --git a/utils/misc/src/main/java/org/onlab/packet/DHCP.java b/utils/misc/src/main/java/org/onlab/packet/DHCP.java
index 9ace649..b355496 100644
--- a/utils/misc/src/main/java/org/onlab/packet/DHCP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/DHCP.java
@@ -40,7 +40,6 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 public class DHCP extends BasePacket {
     /**
diff --git a/utils/misc/src/main/java/org/onlab/packet/DHCPOption.java b/utils/misc/src/main/java/org/onlab/packet/DHCPOption.java
index fb6f4df..2a3f03c 100644
--- a/utils/misc/src/main/java/org/onlab/packet/DHCPOption.java
+++ b/utils/misc/src/main/java/org/onlab/packet/DHCPOption.java
@@ -36,7 +36,6 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 public class DHCPOption {
     protected byte code;
diff --git a/utils/misc/src/main/java/org/onlab/packet/Data.java b/utils/misc/src/main/java/org/onlab/packet/Data.java
index 9754ceb..429b456 100644
--- a/utils/misc/src/main/java/org/onlab/packet/Data.java
+++ b/utils/misc/src/main/java/org/onlab/packet/Data.java
@@ -36,7 +36,6 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 public class Data extends BasePacket {
     protected byte[] data;
diff --git a/utils/misc/src/main/java/org/onlab/packet/Ethernet.java b/utils/misc/src/main/java/org/onlab/packet/Ethernet.java
index 7f729c5..8399e57 100644
--- a/utils/misc/src/main/java/org/onlab/packet/Ethernet.java
+++ b/utils/misc/src/main/java/org/onlab/packet/Ethernet.java
@@ -40,7 +40,6 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 public class Ethernet extends BasePacket {
     private static final String HEXES = "0123456789ABCDEF";
diff --git a/utils/misc/src/main/java/org/onlab/packet/ICMP.java b/utils/misc/src/main/java/org/onlab/packet/ICMP.java
index 0a52984..f4f8667 100644
--- a/utils/misc/src/main/java/org/onlab/packet/ICMP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/ICMP.java
@@ -37,7 +37,6 @@
 /**
  * Implements ICMP packet format.
  *
- * @author shudong.zhou@bigswitch.com
  */
 public class ICMP extends BasePacket {
     protected byte icmpType;
diff --git a/utils/misc/src/main/java/org/onlab/packet/IPacket.java b/utils/misc/src/main/java/org/onlab/packet/IPacket.java
index be9e4c8..36ab1ad 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IPacket.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IPacket.java
@@ -34,7 +34,6 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 public interface IPacket {
     /**
diff --git a/utils/misc/src/main/java/org/onlab/packet/IPv4.java b/utils/misc/src/main/java/org/onlab/packet/IPv4.java
index 7176f67..395bcc5 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IPv4.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IPv4.java
@@ -42,7 +42,6 @@
 import java.util.Map;
 
 /**
- * @author David Erickson (daviderickson@cs.stanford.edu)
  *
  */
 public class IPv4 extends BasePacket {
@@ -472,10 +471,10 @@
         int result = 0;
         for (int i = 0; i < 4; ++i) {
             result = ipAddress >> (3 - i) * 8 & 0xff;
-            sb.append(Integer.valueOf(result).toString());
-            if (i != 3) {
-                sb.append(".");
-            }
+        sb.append(Integer.valueOf(result).toString());
+        if (i != 3) {
+            sb.append(".");
+        }
         }
         return sb.toString();
     }
diff --git a/utils/misc/src/main/java/org/onlab/packet/LLC.java b/utils/misc/src/main/java/org/onlab/packet/LLC.java
index 0c64c62..a359e05 100644
--- a/utils/misc/src/main/java/org/onlab/packet/LLC.java
+++ b/utils/misc/src/main/java/org/onlab/packet/LLC.java
@@ -38,7 +38,6 @@
  * This class represents an Link Local Control header that is used in Ethernet
  * 802.3.
  *
- * @author alexreimers
  *
  */
 public class LLC extends BasePacket {
diff --git a/utils/misc/src/main/java/org/onlab/packet/LLDP.java b/utils/misc/src/main/java/org/onlab/packet/LLDP.java
index e3909ba..a8dc15e 100644
--- a/utils/misc/src/main/java/org/onlab/packet/LLDP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/LLDP.java
@@ -40,7 +40,6 @@
 import java.util.List;
 
 /**
- * @author David Erickson (daviderickson@cs.stanford.edu)
  *
  */
 public class LLDP extends BasePacket {
diff --git a/utils/misc/src/main/java/org/onlab/packet/LLDPOrganizationalTLV.java b/utils/misc/src/main/java/org/onlab/packet/LLDPOrganizationalTLV.java
index 4b1f424..fb359a4 100644
--- a/utils/misc/src/main/java/org/onlab/packet/LLDPOrganizationalTLV.java
+++ b/utils/misc/src/main/java/org/onlab/packet/LLDPOrganizationalTLV.java
@@ -36,7 +36,6 @@
 /**
  * The class representing LLDP Organizationally Specific TLV.
  *
- * @author Sho Shimizu (sho.shimizu@gmail.com)
  */
 public class LLDPOrganizationalTLV extends LLDPTLV {
     public static final int OUI_LENGTH = 3;
@@ -163,8 +162,8 @@
         this.setSubType(optionalField.get());
 
         final byte[] infoString = new byte[this.getLength()
-                - LLDPOrganizationalTLV.OUI_LENGTH
-                - LLDPOrganizationalTLV.SUBTYPE_LENGTH];
+                                           - LLDPOrganizationalTLV.OUI_LENGTH
+                                           - LLDPOrganizationalTLV.SUBTYPE_LENGTH];
         optionalField.get(infoString);
         this.setInfoString(infoString);
         return this;
diff --git a/utils/misc/src/main/java/org/onlab/packet/LLDPTLV.java b/utils/misc/src/main/java/org/onlab/packet/LLDPTLV.java
index 207b928..04f89a0 100644
--- a/utils/misc/src/main/java/org/onlab/packet/LLDPTLV.java
+++ b/utils/misc/src/main/java/org/onlab/packet/LLDPTLV.java
@@ -38,7 +38,6 @@
 /**
  *
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 public class LLDPTLV {
     protected byte type;
diff --git a/utils/misc/src/main/java/org/onlab/packet/MACAddress.java b/utils/misc/src/main/java/org/onlab/packet/MACAddress.java
index 7d6f77e..c913e1d 100644
--- a/utils/misc/src/main/java/org/onlab/packet/MACAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/MACAddress.java
@@ -20,7 +20,6 @@
 /**
  * The class representing MAC address.
  *
- * @author Sho Shimizu (sho.shimizu@gmail.com)
  */
 public class MACAddress {
     public static final int MAC_ADDRESS_LENGTH = 6;
diff --git a/utils/misc/src/main/java/org/onlab/packet/TCP.java b/utils/misc/src/main/java/org/onlab/packet/TCP.java
index 95a8d8f..ed4e438 100644
--- a/utils/misc/src/main/java/org/onlab/packet/TCP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/TCP.java
@@ -36,7 +36,6 @@
 
 /**
  *
- * @author shudong.zhou@bigswitch.com
  */
 
 public class TCP extends BasePacket {
diff --git a/utils/misc/src/main/java/org/onlab/packet/UDP.java b/utils/misc/src/main/java/org/onlab/packet/UDP.java
index 41e48d3..7886dab 100644
--- a/utils/misc/src/main/java/org/onlab/packet/UDP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/UDP.java
@@ -38,7 +38,6 @@
 
 /**
  *
- * @author David Erickson (daviderickson@cs.stanford.edu)
  */
 
 public class UDP extends BasePacket {
