diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 7b8f51ae3c8131f6a8182d919880e28d0735b832..621e72ce38bfba728097b72d40e79c6a0633952e 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -560,21 +560,6 @@ void LLNotification::setResponseFunctor(const LLNotificationResponderPtr& respon
 	mResponder = responder;
 }
 
-bool LLNotification::payloadContainsAll(const std::vector<std::string>& required_fields) const
-{
-	for(std::vector<std::string>::const_iterator required_fields_it = required_fields.begin(); 
-		required_fields_it != required_fields.end();
-		required_fields_it++)
-	{
-		std::string required_field_name = *required_fields_it;
-		if( ! getPayload().has(required_field_name))
-		{
-			return false; // a required field was not found
-		}
-	}
-	return true; // all required fields were found
-}
-
 bool LLNotification::isEquivalentTo(LLNotificationPtr that) const
 {
 	if (this->mTemplatep->mName != that->mTemplatep->mName) 
@@ -583,11 +568,22 @@ bool LLNotification::isEquivalentTo(LLNotificationPtr that) const
 	}
 	if (this->mTemplatep->mUnique)
 	{
+		const LLSD& these_substitutions = this->getSubstitutions();
+		const LLSD& those_substitutions = that->getSubstitutions();
+
 		// highlander bit sez there can only be one of these
-		return
-			this->payloadContainsAll(that->mTemplatep->mUniqueContext) &&
-			that->payloadContainsAll(this->mTemplatep->mUniqueContext);
+		for (std::vector<std::string>::const_iterator it = mTemplatep->mUniqueContext.begin(), end_it = mTemplatep->mUniqueContext.end();
+			it != end_it;
+			++it)
+		{
+			if (these_substitutions.get(*it).asString() != those_substitutions.get(*it).asString())
+			{
+				return false;
+			}
+		}
+		return true;
 	}
+
 	return false; 
 }
 
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index c942a3251203ebd728e0ca7dfa4d6929cd29a611..8bfada0e71c26c9e9ee2c27bb17105eb3291280a 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -400,8 +400,6 @@ friend class LLNotifications;
 
 	void cancel();
 
-	bool payloadContainsAll(const std::vector<std::string>& required_fields) const;
-
 public:
 
 	// constructor from a saved notification
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index f9dacf02077a9f390aa900e5394abc57831c1de8..b87cb9a433c2b9f3f7cf50854359273c268fe682 100644
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -361,8 +361,7 @@
 			<stat_view
 			   name="physicsdetail"
 			   label="Physics Details"
-			   show_label="true"
-			   display_children="false">
+			   show_label="true">
 			  <stat_bar
 				 name="physicspinnedtasks"
 				 label="Pinned Objects"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 88732fee7d6d3ee406582a98d511cef77953c94e..290c8c55a9bd550df7b9e0cfed5f2f860643abb9 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4886,6 +4886,10 @@ If you want to view streaming media on parcels that support it you should go to
    persist="true"
    type="notify">
 No Media Plugin was found to handle the "[MIME_TYPE]" mime type.  Media of this type will be unavailable.
+    <unique>
+      <context key="[MIME_TYPE]"/>
+    </unique>
+
   </notification>
   <notification
    icon="alertmodal.tga"