diff --git a/app/src/main/java/projekt/substratum/helper/services/Helper.java b/app/src/main/java/projekt/substratum/helper/services/Helper.java
index cc1761a..1c5936a 100644
--- a/app/src/main/java/projekt/substratum/helper/services/Helper.java
+++ b/app/src/main/java/projekt/substratum/helper/services/Helper.java
@@ -22,7 +22,7 @@
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        Log.e("SubstratumHelper",
+        Log.d("SubstratumHelper",
                 "BroadcastReceiver has accepted Substratum's commands and is running now...");
         Root.requestRootAccess();
 
@@ -31,7 +31,7 @@
         }
 
         if (intent.getStringExtra("om-commands") != null) {
-            Log.e("SubstratumHelper", intent.getStringExtra("om-commands"));
+            Log.d("SubstratumHelper", intent.getStringExtra("om-commands"));
             Root.runCommand(intent.getStringExtra("om-commands"));
         }
     }
@@ -61,10 +61,10 @@
         for (int i = 0; i < packages_to_uninstall.size(); i++) {
             String current = packages_to_uninstall.get(i);
 
-            Log.e("SubstratumHelper", "Intent received to purge referendum package file \"" +
+            Log.d("SubstratumHelper", "Intent received to purge referendum package file \"" +
                     current + "\"");
             if (checkIfPackageActivated(packages_to_uninstall.get(i))) {
-                Log.e("SubstratumHelper", "Package file \"" + current +
+                Log.d("SubstratumHelper", "Package file \"" + current +
                         "\" requires an overlay disable prior to uninstall...");
                 if (final_commands_disable.length() == 0) {
                     final_commands_disable = "om disable " + current;
@@ -84,20 +84,20 @@
         }
 
         if (final_commands_disable.length() > 0) {
-            Log.e("SubstratumHelper", "Disable commands: " + final_commands_disable);
+            Log.d("SubstratumHelper", "Disable commands: " + final_commands_disable);
             Root.runCommand(final_commands_disable);
         } else {
             if (final_commands_uninstall.length() > 0) {
-                Log.e("SubstratumHelper", "Uninstall commands: " + final_commands_uninstall);
+                Log.d("SubstratumHelper", "Uninstall commands: " + final_commands_uninstall);
                 Root.runCommand(final_commands_uninstall);
             }
         }
-        
+
         // Clear the resource idmapping files generated by OMS
-        Log.e("SubstratumHelper", "Cleaning up resource-cache directory...");
+        Log.d("SubstratumHelper", "Cleaning up resource-cache directory...");
         Root.runCommand("rm /data/resource-cache/*");
         // Now clear the persistent overlays database
-        Log.e("SubstratumHelper", "Finalizing clean up of persistent overlays database...");
+        Log.d("SubstratumHelper", "Finalizing clean up of persistent overlays database...");
         Root.runCommand("rm -rf /data/system/overlays.xml");
     }
 }
\ No newline at end of file
