diff --git a/include/sysutils/NetlinkEvent.h b/include/sysutils/NetlinkEvent.h
index 1ee9849..25a56f7 100644
--- a/include/sysutils/NetlinkEvent.h
+++ b/include/sysutils/NetlinkEvent.h
@@ -16,6 +16,8 @@
 #ifndef _NETLINKEVENT_H
 #define _NETLINKEVENT_H
 
+#include <sysutils/NetlinkListener.h>
+
 #define NL_PARAMS_MAX 32
 
 class NetlinkEvent {
@@ -36,7 +38,7 @@
     NetlinkEvent();
     virtual ~NetlinkEvent();
 
-    bool decode(char *buffer, int size, int format);
+    bool decode(char *buffer, int size, int format = NetlinkListener::NETLINK_FORMAT_ASCII);
     const char *findParam(const char *paramName);
 
     const char *getSubsystem() { return mSubsystem; }
diff --git a/include/sysutils/NetlinkListener.h b/include/sysutils/NetlinkListener.h
index 1cf5f9f..de0fc3c 100644
--- a/include/sysutils/NetlinkListener.h
+++ b/include/sysutils/NetlinkListener.h
@@ -28,11 +28,12 @@
     static const int NETLINK_FORMAT_ASCII = 0;
     static const int NETLINK_FORMAT_BINARY = 1;
 
-    NetlinkListener(int socket, int format);
+    NetlinkListener(int socket, int format = NETLINK_FORMAT_ASCII);
     virtual ~NetlinkListener() {}
 
 protected:
     virtual bool onDataAvailable(SocketClient *cli);
     virtual void onEvent(NetlinkEvent *evt) = 0;
 };
+
 #endif
diff --git a/libsysutils/src/NetlinkEvent.cpp b/libsysutils/src/NetlinkEvent.cpp
index 65cfb4e..f2eb664 100644
--- a/libsysutils/src/NetlinkEvent.cpp
+++ b/libsysutils/src/NetlinkEvent.cpp
@@ -19,7 +19,6 @@
 #define LOG_TAG "NetlinkEvent"
 #include <cutils/log.h>
 
-#include <sysutils/NetlinkListener.h>
 #include <sysutils/NetlinkEvent.h>
 
 #include <sys/types.h>
@@ -69,7 +68,7 @@
  */
 bool NetlinkEvent::parseBinaryNetlinkMessage(char *buffer, int size) {
     size_t sz = size;
-    struct nlmsghdr *nh = (struct nlmsghdr *) buffer;
+    const struct nlmsghdr *nh = (struct nlmsghdr *) buffer;
 
     while (NLMSG_OK(nh, sz) && (nh->nlmsg_type != NLMSG_DONE)) {
         if (nh->nlmsg_type == RTM_NEWLINK) {
@@ -134,8 +133,8 @@
  * netlink socket.
  */
 bool NetlinkEvent::parseAsciiNetlinkMessage(char *buffer, int size) {
-    char *s = buffer;
-    char *end;
+    const char *s = buffer;
+    const char *end;
     int param_idx = 0;
     int i;
     int first = 1;
@@ -181,11 +180,11 @@
 }
 
 bool NetlinkEvent::decode(char *buffer, int size, int format) {
-  if (format == NetlinkListener::NETLINK_FORMAT_BINARY) {
-    return parseBinaryNetlinkMessage(buffer, size);
-  } else {
-    return parseAsciiNetlinkMessage(buffer, size);
-  }
+    if (format == NetlinkListener::NETLINK_FORMAT_BINARY) {
+        return parseBinaryNetlinkMessage(buffer, size);
+    } else {
+        return parseAsciiNetlinkMessage(buffer, size);
+    }
 }
 
 const char *NetlinkEvent::findParam(const char *paramName) {
diff --git a/libsysutils/src/NetlinkListener.cpp b/libsysutils/src/NetlinkListener.cpp
index c74e952..80d83c3 100644
--- a/libsysutils/src/NetlinkListener.cpp
+++ b/libsysutils/src/NetlinkListener.cpp
@@ -24,12 +24,10 @@
 #include <cutils/log.h>
 #include <cutils/uevent.h>
 
-#include <sysutils/NetlinkListener.h>
 #include <sysutils/NetlinkEvent.h>
 
 NetlinkListener::NetlinkListener(int socket, int format) :
-                            SocketListener(socket, false) {
-    mFormat = format;
+                            SocketListener(socket, false), mFormat(format) {
 }
 
 bool NetlinkListener::onDataAvailable(SocketClient *cli)
@@ -44,9 +42,7 @@
     }
 
     NetlinkEvent *evt = new NetlinkEvent();
-    int err = evt->decode(mBuffer, count, mFormat);
-
-    if (!err) {
+    if (!evt->decode(mBuffer, count, mFormat)) {
         SLOGE("Error decoding NetlinkEvent");
     } else {
         onEvent(evt);
