diff --git a/dbus-top/main.cpp b/dbus-top/main.cpp
index d56b72e..5293f9b 100644
--- a/dbus-top/main.cpp
+++ b/dbus-top/main.cpp
@@ -98,12 +98,12 @@
         ret++;
         if (static_cast<int>(txt.size()) > width)
         {
-            mvwprintw(win, y, x, txt.substr(0, width).c_str());
+            mvwaddstr(win, y, x, txt.substr(0, width).c_str());
             txt = txt.substr(width);
         }
         else
         {
-            mvwprintw(win, y, x, txt.c_str());
+            mvwaddstr(win, y, x, txt.c_str());
             break;
         }
         y++;
diff --git a/dbus-top/menu.cpp b/dbus-top/menu.cpp
index af59f14..47d1f57 100644
--- a/dbus-top/menu.cpp
+++ b/dbus-top/menu.cpp
@@ -75,7 +75,7 @@
             {
                 s.push_back(' ');
             }
-            mvwprintw(win_, y, x, s.c_str());
+            mvwaddstr(win_, y, x, s.c_str());
             wattrset(win_, 0);
         }
         else
@@ -319,4 +319,4 @@
         *ret = r;
     }
     return true;
-}
\ No newline at end of file
+}
diff --git a/dbus-top/views.cpp b/dbus-top/views.cpp
index 0e6f8b0..fdbf85d 100644
--- a/dbus-top/views.cpp
+++ b/dbus-top/views.cpp
@@ -420,7 +420,7 @@
                         s.push_back(' ');
                     }
                 }
-                mvwprintw(win, y, x, s.c_str());
+                mvwaddstr(win, y, x, s.c_str());
                 wattrset(win, 0);
             }
             else
@@ -492,7 +492,7 @@
         }
         else
         {
-            mvwprintw(win, y, x, "Sensor details not found");
+            mvwaddstr(win, y, x, "Sensor details not found");
         }
     }
     DrawBorderIfNeeded();
@@ -853,29 +853,29 @@
         {
             mvwaddch(win, y1 - 3, x, '-');
         }
-        mvwprintw(win, y1 - 3, arrow_x - 8, "Press [Enter] to show/hide");
-        mvwprintw(win, y1 - 2, caption_x - 5,
+        mvwaddstr(win, y1 - 3, arrow_x - 8, "Press [Enter] to show/hide");
+        mvwaddstr(win, y1 - 2, caption_x - 5,
                   "DBus fields for aggregating and sorting results:");
         if (curr_menu_state_ == LeftSide)
         {
-            mvwprintw(win, y1 - 1, x1 - 4, "--[ Available Fields ]--");
-            mvwprintw(win, y1 - 1, x2 - 4, "--- Active Fields ---");
+            mvwaddstr(win, y1 - 1, x1 - 4, "--[ Available Fields ]--");
+            mvwaddstr(win, y1 - 1, x2 - 4, "--- Active Fields ---");
         }
         else
         {
-            mvwprintw(win, y1 - 1, x1 - 4, "--- Available Fields ---");
-            mvwprintw(win, y1 - 1, x2 - 4, "--[ Active Fields ]--");
+            mvwaddstr(win, y1 - 1, x1 - 4, "--- Available Fields ---");
+            mvwaddstr(win, y1 - 1, x2 - 4, "--[ Active Fields ]--");
         }
         if (curr_menu_state_ == LeftSide)
         {
-            mvwprintw(win, arrow_y, arrow_x, "-->");
-            mvwprintw(win, caption_y, caption_x,
+            mvwaddstr(win, arrow_y, arrow_x, "-->");
+            mvwaddstr(win, caption_y, caption_x,
                       "Press [Space] to move to the right");
         }
         else
         {
-            mvwprintw(win, arrow_y, arrow_x, "<--");
-            mvwprintw(win, caption_y, caption_x,
+            mvwaddstr(win, arrow_y, arrow_x, "<--");
+            mvwaddstr(win, caption_y, caption_x,
                       "Press [Space] to move to the left");
         }
     }
