diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPKeepaliveMsg.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPKeepaliveMsg.java
index c8aef36..ae77388 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPKeepaliveMsg.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPKeepaliveMsg.java
@@ -39,20 +39,10 @@
      * Builder interface with get and set functions to build Keepalive message.
      */
     interface Builder extends BGPMessage.Builder {
-
         @Override
         BGPKeepaliveMsg build();
 
         @Override
-        BGPVersion getVersion();
-
-        @Override
-        BGPType getType();
-
-        @Override
         Builder setHeader(BGPHeader bgpMsgHeader);
-
-        @Override
-        BGPHeader getHeader();
     }
 }
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPOpenMsg.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPOpenMsg.java
index 2271b60..a8c242b 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPOpenMsg.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/BGPOpenMsg.java
@@ -71,15 +71,6 @@
         @Override
         BGPOpenMsg build() throws BGPParseException;
 
-        @Override
-        BGPHeader getHeader();
-
-        @Override
-        BGPVersion getVersion();
-
-        @Override
-        BGPType getType();
-
         /**
          * Returns hold time of Open Message.
          *
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPKeepaliveMsgVer4.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPKeepaliveMsgVer4.java
index a6668b3..10e6bb9 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPKeepaliveMsgVer4.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPKeepaliveMsgVer4.java
@@ -98,21 +98,6 @@
         BGPHeader bgpMsgHeader;
 
         @Override
-        public BGPVersion getVersion() {
-            return BGPVersion.BGP_4;
-        }
-
-        @Override
-        public BGPType getType() {
-            return BGPType.KEEP_ALIVE;
-        }
-
-        @Override
-        public BGPHeader getHeader() {
-            return this.bgpMsgHeader;
-        }
-
-        @Override
         public Builder setHeader(BGPHeader bgpMsgHeader) {
             this.bgpMsgHeader = bgpMsgHeader;
             return this;
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPNotificationMsgVer4.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPNotificationMsgVer4.java
index 3c1eaca..064dead 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPNotificationMsgVer4.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPNotificationMsgVer4.java
@@ -123,16 +123,6 @@
         private boolean isBGPHeaderSet = false;
 
         @Override
-        public BGPVersion getVersion() {
-            return BGPVersion.BGP_4;
-        }
-
-        @Override
-        public BGPType getType() {
-            return BGPType.NOTIFICATION;
-        }
-
-        @Override
         public BGPNotificationMsg build() throws BGPParseException {
             BGPHeader bgpHeader = this.isBGPHeaderSet ? this.bgpHeader : DEFAULT_MESSAGE_HEADER;
             if (!this.isErrorCodeSet) {
@@ -171,11 +161,6 @@
         }
 
         @Override
-        public BGPHeader getHeader() {
-            return this.bgpHeader;
-        }
-
-        @Override
         public Builder setHeader(BGPHeader bgpMsgHeader) {
             this.bgpHeader = bgpMsgHeader;
             return this;
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPOpenMsgVer4.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPOpenMsgVer4.java
index bd22889..b50342d 100644
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPOpenMsgVer4.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPOpenMsgVer4.java
@@ -327,27 +327,12 @@
         }
 
         @Override
-        public BGPHeader getHeader() {
-            return this.bgpMsgHeader;
-        }
-
-        @Override
         public Builder setHeader(BGPHeader bgpMsgHeader) {
             this.bgpMsgHeader = bgpMsgHeader;
             return this;
         }
 
         @Override
-        public BGPVersion getVersion() {
-            return BGPVersion.BGP_4;
-        }
-
-        @Override
-        public BGPType getType() {
-            return MSG_TYPE;
-        }
-
-        @Override
         public short getHoldTime() {
             return this.holdTime;
         }
