diff --git a/res/values/strings.xml b/res/values/strings.xml
index e7a124e..139bacc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5823,13 +5823,13 @@
     <string name="zen_mode_entry_conditions_summary_none">Never</string>
 
     <!-- [CHAR LIMIT=20] Zen mode settings: Phone calls option -->
-    <string name="zen_mode_phone_calls">Phone calls</string>
+    <string name="zen_mode_phone_calls">Calls</string>
 
     <!-- [CHAR LIMIT=20] Zen mode settings: Messages option -->
     <string name="zen_mode_messages">Messages</string>
 
-    <!-- [CHAR LIMIT=20] Zen mode settings: From option -->
-    <string name="zen_mode_from">From</string>
+    <!-- [CHAR LIMIT=50] Zen mode settings: From option -->
+    <string name="zen_mode_from">Calls/messages from</string>
 
     <!-- [CHAR LIMIT=30] Zen mode settings: From option value: Anyone -->
     <string name="zen_mode_from_anyone">Anyone</string>
@@ -5840,8 +5840,11 @@
     <!-- [CHAR LIMIT=30] Zen mode settings: From option value: Starred contacts -->
     <string name="zen_mode_from_starred">Starred contacts only</string>
 
+    <!-- [CHAR LIMIT=50] Zen mode settings: Events option -->
+    <string name="zen_mode_events">Events and reminders</string>
+
     <!-- [CHAR LIMIT=80] Zen mode settings: Reminder text about alarms -->
-    <string name="zen_mode_alarm_info">Alarms and other personal reminders are always priority</string>
+    <string name="zen_mode_alarm_info">Alarms are always priority interruptions</string>
 
     <!-- [CHAR LIMIT=20] Zen mode settings: When option -->
     <string name="zen_mode_when">Automatically turn on</string>
diff --git a/res/xml/zen_mode_settings.xml b/res/xml/zen_mode_settings.xml
index aea4291..8761d10 100644
--- a/res/xml/zen_mode_settings.xml
+++ b/res/xml/zen_mode_settings.xml
@@ -30,6 +30,13 @@
         android:title="@string/zen_mode_important_category" >
 
         <SwitchPreference
+            android:key="events"
+            android:title="@string/zen_mode_events"
+            android:persistent="false"
+            android:switchTextOff=""
+            android:switchTextOn="" />
+
+        <SwitchPreference
             android:key="phone_calls"
             android:title="@string/zen_mode_phone_calls"
             android:persistent="false"
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index 091e121..7fd3aa1 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -72,6 +72,7 @@
     private static final String KEY_CALLS = "phone_calls";
     private static final String KEY_MESSAGES = "messages";
     private static final String KEY_STARRED = "starred";
+    private static final String KEY_EVENTS = "events";
     private static final String KEY_ALARM_INFO = "alarm_info";
 
     private static final String KEY_DOWNTIME = "downtime";
@@ -112,6 +113,7 @@
         }
         rt.put(R.string.zen_mode_messages, KEY_MESSAGES);
         rt.put(R.string.zen_mode_from_starred, KEY_STARRED);
+        rt.put(R.string.zen_mode_events, KEY_EVENTS);
         rt.put(R.string.zen_mode_alarm_info, KEY_ALARM_INFO);
         rt.put(R.string.zen_mode_downtime_category, KEY_DOWNTIME);
         rt.put(R.string.zen_mode_downtime_days, KEY_DAYS);
@@ -132,6 +134,7 @@
     private SwitchPreference mCalls;
     private SwitchPreference mMessages;
     private DropDownPreference mStarred;
+    private SwitchPreference mEvents;
     private Preference mDays;
     private TimePickerPreference mStart;
     private TimePickerPreference mEnd;
@@ -220,6 +223,20 @@
         });
         important.addPreference(mStarred);
 
+        mEvents = (SwitchPreference) important.findPreference(KEY_EVENTS);
+        mEvents.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                if (mDisableListeners) return true;
+                final boolean val = (Boolean) newValue;
+                if (val == mConfig.allowEvents) return true;
+                if (DEBUG) Log.d(TAG, "onPrefChange allowEvents=" + val);
+                final ZenModeConfig newConfig = mConfig.copy();
+                newConfig.allowEvents = val;
+                return setZenModeConfig(newConfig);
+            }
+        });
+
         final PreferenceCategory downtime = (PreferenceCategory) root.findPreference(KEY_DOWNTIME);
 
         mDays = downtime.findPreference(KEY_DAYS);
@@ -365,6 +382,7 @@
         }
         mMessages.setChecked(mConfig.allowMessages);
         mStarred.setSelectedValue(mConfig.allowFrom);
+        mEvents.setChecked(mConfig.allowEvents);
         updateStarredEnabled();
         updateDays();
         mStart.setTime(mConfig.sleepStartHour, mConfig.sleepStartMinute);
