diff --git a/indra/newview/llconversationmodel.cpp b/indra/newview/llconversationmodel.cpp
index 8aa740e5d1113231bbf4ebc2e201d1f3d2da8914..1c56bd672d3d122cf67f24aa2f8e3f2db0da0697 100644
--- a/indra/newview/llconversationmodel.cpp
+++ b/indra/newview/llconversationmodel.cpp
@@ -349,15 +349,21 @@ const bool LLConversationItemSession::getTime(F64& time) const
 	return has_time;
 }
 
-void LLConversationItemSession::dumpDebugData()
+void LLConversationItemSession::dumpDebugData(bool dump_children)
 {
+	// Session info
 	llinfos << "Merov debug : session " << this << ", uuid = " << mUUID << ", name = " << mName << ", is loaded = " << mIsLoaded << llendl;
-	LLConversationItemParticipant* participant = NULL;
-	child_list_t::iterator iter;
-	for (iter = mChildren.begin(); iter != mChildren.end(); iter++)
+	// Children info
+	if (dump_children)
 	{
-		participant = dynamic_cast<LLConversationItemParticipant*>(*iter);
-		participant->dumpDebugData();
+		for (child_list_t::iterator iter = mChildren.begin(); iter != mChildren.end(); iter++)
+		{
+			LLConversationItemParticipant* participant = dynamic_cast<LLConversationItemParticipant*>(*iter);
+			if (participant)
+			{
+				participant->dumpDebugData();
+			}
+		}
 	}
 }
 
diff --git a/indra/newview/llconversationmodel.h b/indra/newview/llconversationmodel.h
index 2ee21d0c166f1d597eece9c2a777dbf73061dcfc..dd849210a85809dd79e6c4bce76ad06de5522383 100755
--- a/indra/newview/llconversationmodel.h
+++ b/indra/newview/llconversationmodel.h
@@ -168,7 +168,7 @@ class LLConversationItemSession : public LLConversationItem
     void addVoiceOptions(menuentry_vec_t& items);
 	virtual const bool getTime(F64& time) const;
 
-	void dumpDebugData();
+	void dumpDebugData(bool dump_children = false);
 
 private:
 	bool mIsLoaded;		// true if at least one participant has been added to the session, false otherwise
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index 3569516388b0c6767f4e018a0ca42ea45130299b..063b90e76b1a3a762a49e1c931213c47e1267759 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -48,6 +48,8 @@ LLColor4	LLOutputMonitorCtrl::sColorBound;
 //F32			LLOutputMonitorCtrl::sRectWidthRatio	= 0.f;
 //F32			LLOutputMonitorCtrl::sRectHeightRatio	= 0.f;
 
+static LLUUID test_uuid("c684ce33-89fb-4544-8f7b-dae243c8b214");
+
 LLOutputMonitorCtrl::Params::Params()
 :	draw_border("draw_border"),
 	image_mute("image_mute"),
@@ -278,7 +280,6 @@ BOOL LLOutputMonitorCtrl::handleMouseUp(S32 x, S32 y, MASK mask)
 
 void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id, const LLUUID& session_id/* = LLUUID::null*/, bool show_other_participants_speaking /* = false */)
 {
-	static LLUUID test_uuid("c684ce33-89fb-4544-8f7b-dae243c8b214");
 	bool test_on = (speaker_id == test_uuid);
 	if (test_on)
 	{
@@ -345,6 +346,11 @@ void LLOutputMonitorCtrl::onChange()
 void LLOutputMonitorCtrl::switchIndicator(bool switch_on)
 {
 	llinfos << "Merov debug : switchIndicator, mSpeakerId = " << mSpeakerId << ", switch_on = " << switch_on << llendl;
+	bool test_on = (mSpeakerId == test_uuid);
+	if (test_on && !switch_on)
+	{
+		llinfos << "Merov debug : switching agent off!" << llendl;
+	}
 	// ensure indicator is visible in case it is not in visible chain
 	// to be called when parent became visible next time to notify parent that visibility is changed.
 	setVisible(TRUE);
diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp
index 316a2739b8237d59a4ce6fab6eb9e3de27c9bcd5..752218c7760a66cabd411312d93d408433b379c7 100644
--- a/indra/newview/llspeakingindicatormanager.cpp
+++ b/indra/newview/llspeakingindicatormanager.cpp
@@ -224,13 +224,13 @@ void SpeakingIndicatorManager::onParticipantsChanged()
 
 void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& speakers_uuids, BOOL switch_on)
 {
-	llinfos << "Merov debug : switchSpeakerIndicators, switch_on = " << switch_on << llendl;
 	LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel();
 	LLUUID session_id;
 	if (voice_channel)
 	{
 		session_id = voice_channel->getSessionID();
 	}
+	llinfos << "Merov debug : switchSpeakerIndicators, switch_on = " << switch_on << ", voice channel = " << session_id << llendl;
 
 	speaker_ids_t::const_iterator it_uuid = speakers_uuids.begin(); 
 	for (; it_uuid != speakers_uuids.end(); ++it_uuid)
@@ -255,17 +255,17 @@ void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& spea
 			}
 			was_switched_on = was_switched_on || switch_current_on;
 
+			llinfos << "Merov debug : indicator for " << *it_uuid << ", switch_current_on = " << switch_current_on << ", session = " << indicator->getTargetSessionID() << llendl;
 			indicator->switchIndicator(switch_current_on);
-
 		}
 
 		if (was_found)
 		{
-			LL_DEBUGS("SpeakingIndicator") << mSpeakingIndicators.count(*it_uuid) << " indicators where found" << LL_ENDL;
+			LL_DEBUGS("SpeakingIndicator") << mSpeakingIndicators.count(*it_uuid) << " indicators were found" << LL_ENDL;
 
 			if (switch_on && !was_switched_on)
 			{
-				LL_DEBUGS("SpeakingIndicator") << "but non of them where switched on" << LL_ENDL;
+				LL_DEBUGS("SpeakingIndicator") << "but none of them were switched on" << LL_ENDL;
 			}
 
 			if (was_switched_on)