diff --git a/src/buffer_service.cpp b/src/buffer_service.cpp
index e17f7f0..7ee2def 100644
--- a/src/buffer_service.cpp
+++ b/src/buffer_service.cpp
@@ -34,9 +34,8 @@
 BufferService::BufferService(const Config& config, DbusLoop& dbusLoop,
                              HostConsole& hostConsole, LogBuffer& logBuffer,
                              FileStorage& fileStorage) :
-    config(config),
-    dbusLoop(&dbusLoop), hostConsole(&hostConsole), logBuffer(&logBuffer),
-    fileStorage(&fileStorage)
+    config(config), dbusLoop(&dbusLoop), hostConsole(&hostConsole),
+    logBuffer(&logBuffer), fileStorage(&fileStorage)
 {}
 
 void BufferService::run()
@@ -68,14 +67,14 @@
         log<level::WARNING>("Automatic flush disabled");
     }
 
-    log<level::DEBUG>("Initialization complete",
-                      entry("SocketId=%s", config.socketId),
-                      entry("BufMaxSize=%lu", config.bufMaxSize),
-                      entry("BufMaxTime=%lu", config.bufMaxTime),
-                      entry("BufFlushFull=%s", config.bufFlushFull ? "y" : "n"),
-                      entry("HostState=%s", config.hostState),
-                      entry("OutDir=%s", config.outDir),
-                      entry("MaxFiles=%lu", config.maxFiles));
+    log<level::DEBUG>(
+        "Initialization complete", entry("SocketId=%s", config.socketId),
+        entry("BufMaxSize=%lu", config.bufMaxSize),
+        entry("BufMaxTime=%lu", config.bufMaxTime),
+        entry("BufFlushFull=%s", config.bufFlushFull ? "y" : "n"),
+        entry("HostState=%s", config.hostState),
+        entry("OutDir=%s", config.outDir),
+        entry("MaxFiles=%lu", config.maxFiles));
 
     // Run D-Bus event loop
     const int rc = dbusLoop->run();
diff --git a/src/file_storage.cpp b/src/file_storage.cpp
index ace7a1b..cf35ece 100644
--- a/src/file_storage.cpp
+++ b/src/file_storage.cpp
@@ -14,8 +14,7 @@
 
 FileStorage::FileStorage(const std::string& path, const std::string& prefix,
                          size_t maxFiles) :
-    outDir(path),
-    filePrefix(prefix), filesLimit(maxFiles)
+    outDir(path), filePrefix(prefix), filesLimit(maxFiles)
 {
     // Check path
     if (!outDir.is_absolute())
@@ -110,9 +109,9 @@
         }
         const std::string fileName = file.path().filename();
 
-        const size_t minFileNameLen = filePrefix.length() +
-                                      15 + // time stamp YYYYMMDD_HHMMSS
-                                      fileExt.length();
+        const size_t minFileNameLen =
+            filePrefix.length() + 15 + // time stamp YYYYMMDD_HHMMSS
+            fileExt.length();
         if (fileName.length() < minFileNameLen)
         {
             continue;
diff --git a/src/stream_service.cpp b/src/stream_service.cpp
index b8d84e9..c3a6902 100644
--- a/src/stream_service.cpp
+++ b/src/stream_service.cpp
@@ -15,9 +15,8 @@
 
 StreamService::StreamService(const char* streamDestination, DbusLoop& dbusLoop,
                              HostConsole& hostConsole) :
-    destinationPath(streamDestination),
-    dbusLoop(&dbusLoop), hostConsole(&hostConsole), outputSocketFd(-1),
-    destination()
+    destinationPath(streamDestination), dbusLoop(&dbusLoop),
+    hostConsole(&hostConsole), outputSocketFd(-1), destination()
 {}
 
 StreamService::~StreamService()
