diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 753f9b9..7934800 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -62,7 +62,7 @@
     @Override
     protected void onResume() {
         super.onResume();
-        
+
         mEnableAdb.setChecked(Settings.Secure.getInt(getContentResolver(),
                 Settings.Secure.ADB_ENABLED, 0) != 0);
         mKeepScreenOn.setChecked(Settings.System.getInt(getContentResolver(),
@@ -76,7 +76,7 @@
 
         // Those monkeys kept committing suicide, so we add this property
         // to disable this functionality
-        if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) {
+        if (!TextUtils.isEmpty(SystemProperties.get("monkey.running"))) {
             return false;
         }
 
diff --git a/src/com/android/settings/LanguageSettings.java b/src/com/android/settings/LanguageSettings.java
index 4b805ed..2f1bd2c 100644
--- a/src/com/android/settings/LanguageSettings.java
+++ b/src/com/android/settings/LanguageSettings.java
@@ -206,7 +206,7 @@
         // Input Method stuff
         // Those monkeys kept committing suicide, so we add this property
         // to disable this functionality
-        if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) {
+        if (!TextUtils.isEmpty(SystemProperties.get("monkey.running"))) {
             return false;
         }
 
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 38ad608..6cd8ad3 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -60,13 +60,13 @@
      */
     private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {
             public void onClick(View v) {
-                
+
                 // Those monkeys kept committing suicide, so we add this property
                 // to disable going through with the master clear
-                if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) {
+                if (!TextUtils.isEmpty(SystemProperties.get("monkey.running"))) {
                     return;
                 }
-                
+
                 ICheckinService service = 
                         ICheckinService.Stub.asInterface(ServiceManager.getService("checkin"));
                 if (service != null) {
diff --git a/src/com/android/settings/MediaFormat.java b/src/com/android/settings/MediaFormat.java
index 3594572..870507f 100644
--- a/src/com/android/settings/MediaFormat.java
+++ b/src/com/android/settings/MediaFormat.java
@@ -54,16 +54,16 @@
     private View mFinalView;
     private Button mFinalButton;
 
-    /** 
+    /**
      * The user has gone through the multiple confirmation, so now we go ahead
      * and invoke the Mount Service to format the SD card.
      */
     private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {
             public void onClick(View v) {
-                
+
                 // Those monkeys kept committing suicide, so we add this property
                 // to disable going through with the format
-                if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) {
+                if (!TextUtils.isEmpty(SystemProperties.get("monkey.running"))) {
                     return;
                 }
                 IMountService service =
