diff --git a/evdevpp/test/evmon.cpp b/evdevpp/test/evmon.cpp
index 526f759..dca2c00 100644
--- a/evdevpp/test/evmon.cpp
+++ b/evdevpp/test/evmon.cpp
@@ -14,17 +14,18 @@
  * limitations under the License.
  */
 
-#include <algorithm>
-#include <cassert>
-#include <iostream>
-#include <iterator>
-#include <memory>
 #include "argument.hpp"
 #include "evdevpp/evdev.hpp"
 #include "sdevent/event.hpp"
 #include "sdevent/io.hpp"
 #include "utility.hpp"
 
+#include <algorithm>
+#include <cassert>
+#include <iostream>
+#include <iterator>
+#include <memory>
+
 namespace phosphor
 {
 namespace fan
@@ -79,12 +80,11 @@
     std::cerr << std::flush;
 }
 
-const option ArgumentParser::options[] =
-{
-    { "path",   required_argument,  NULL,   'p' },
-    { "type",   required_argument,  NULL,   't' },
-    { "code",   required_argument,  NULL,   'c' },
-    { 0, 0, 0, 0},
+const option ArgumentParser::options[] = {
+    {"path", required_argument, NULL, 'p'},
+    {"type", required_argument, NULL, 't'},
+    {"code", required_argument, NULL, 'c'},
+    {0, 0, 0, 0},
 };
 
 const char* ArgumentParser::optionstr = "p:t:c:";
@@ -131,26 +131,20 @@
 
     auto loop = sdevent::event::newDefault();
     phosphor::fan::util::FileDescriptor fd(
-            open(path.c_str(), O_RDONLY | O_NONBLOCK));
+        open(path.c_str(), O_RDONLY | O_NONBLOCK));
     auto evdev = evdevpp::evdev::newFromFD(fd());
-    sdevent::event::io::IO callback(
-            loop,
-            fd(),
-            [&evdev](auto& s)
-            {
-                unsigned int type, code, value;
-                std::tie(type, code, value) = evdev.next();
-                std::cout <<
-                    "type: " << libevdev_event_type_get_name(type) <<
-                    " code: " << libevdev_event_code_get_name(type, code) <<
-                    " value: " << value << "\n";
-            });
+    sdevent::event::io::IO callback(loop, fd(), [&evdev](auto& s) {
+        unsigned int type, code, value;
+        std::tie(type, code, value) = evdev.next();
+        std::cout << "type: " << libevdev_event_type_get_name(type)
+                  << " code: " << libevdev_event_code_get_name(type, code)
+                  << " value: " << value << "\n";
+    });
 
     auto value = evdev.fetch(type, stoul(scode));
-    std::cout <<
-        "type: " << libevdev_event_type_get_name(type) <<
-        " code: " << libevdev_event_code_get_name(type, stoul(scode)) <<
-        " value: " << value << "\n";
+    std::cout << "type: " << libevdev_event_type_get_name(type)
+              << " code: " << libevdev_event_code_get_name(type, stoul(scode))
+              << " value: " << value << "\n";
 
     loop.loop();
 
