diff --git a/doc/contributions.txt b/doc/contributions.txt
index ed9b2fe1467050218adb232abe016a02d2d01565..9bdc25b1ee0110c40044e61082d90b293f8627d5 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -4,7 +4,7 @@ along with the issue identifier corresponding to the patches we've
 received from them.  To see more about these contributions, visit
 http://jira.secondlife.com/ and enter the issue identifier.
 
-Alissa Sabre - VWR-81, VWR-83, VWR-414
+Alissa Sabre - VWR-81, VWR-83, VWR-414, VWR-415
 blino Nakamura - VWR-17
 bushing Spatula - VWR-424
 Drewan Keats - VWR-28
@@ -22,7 +22,7 @@ Kunnis Basiat - VWR-82
 Paul Churchill - VWR-20
 Paula Innis - VWR-30
 Peekay Semyorka - VWR-7, VWR-19, VWR-49
-SignpostMarv Martin - VWR-155
+SignpostMarv Martin - VWR-154, VWR-155
 SpacedOut Frye - VWR-57, VWR-94, VWR-121, VWR-123
 Strife Onizuka - SVC-9, VWR-74, VWR-85, VWR-148
 Zipherius Turas - VWR-76, VWR-77
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 73459facc9d810cb34be2bfaadd8787e43f436f0..f9b7345048f3282203d3b52282dabbd369312cc4 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -50,7 +50,7 @@ const F32 PIXEL_BORDER_THRESHOLD = 0.0001f;
 const F32 PIXEL_CORRECTION_DISTANCE = 0.01f;
 
 const F32 PAD_AMT = 0.5f;
-const F32 DROP_SHADOW_STRENGTH = 0.3f;
+const F32 DROP_SHADOW_SOFT_STRENGTH = 0.3f;
 
 F32 llfont_round_x(F32 x)
 {
@@ -86,6 +86,14 @@ U8 LLFontGL::getStyleFromString(const LLString &style)
 	{
 		ret |= UNDERLINE;
 	}
+	if (style.find("SHADOW") != style.npos)
+	{
+		ret |= DROP_SHADOW;
+	}
+	if (style.find("SOFT_SHADOW") != style.npos)
+	{
+		ret |= DROP_SHADOW_SOFT;
+	}
 	return ret;
 }
 
@@ -551,14 +559,14 @@ S32 LLFontGL::render(const LLWString &wstr,
 	}
 
 	F32 drop_shadow_strength = 0.f;
-	if (style & DROP_SHADOW)
+	if (style & (DROP_SHADOW | DROP_SHADOW_SOFT))
 	{
 		F32 luminance;
 		color.calcHSL(NULL, NULL, &luminance);
-		drop_shadow_strength = clamp_rescale(luminance, 0.35f, 0.6f, 0.f, DROP_SHADOW_STRENGTH);
+		drop_shadow_strength = clamp_rescale(luminance, 0.35f, 0.6f, 0.f, 1.f);
 		if (luminance < 0.35f)
 		{
-			style = style & ~DROP_SHADOW;
+			style = style & ~(DROP_SHADOW | DROP_SHADOW_SOFT);
 		}
 	}
 
@@ -1315,10 +1323,10 @@ void LLFontGL::drawGlyph(const LLRectf& screen_rect, const LLRectf& uv_rect, con
 				renderQuad(screen_rect_offset, uv_rect, slant_offset);
 			}
 		}
-		else if (style & DROP_SHADOW)
+		else if (style & DROP_SHADOW_SOFT)
 		{
 			LLColor4 shadow_color = LLFontGL::sShadowColor;
-			shadow_color.mV[VALPHA] = color.mV[VALPHA] * drop_shadow_strength;
+			shadow_color.mV[VALPHA] = color.mV[VALPHA] * drop_shadow_strength * DROP_SHADOW_SOFT_STRENGTH;
 			glColor4fv(shadow_color.mV);
 			for (S32 pass = 0; pass < 5; pass++)
 			{
@@ -1348,6 +1356,17 @@ void LLFontGL::drawGlyph(const LLRectf& screen_rect, const LLRectf& uv_rect, con
 			glColor4fv(color.mV);
 			renderQuad(screen_rect, uv_rect, slant_offset);
 		}
+		else if (style & DROP_SHADOW)
+		{
+			LLColor4 shadow_color = LLFontGL::sShadowColor;
+			shadow_color.mV[VALPHA] = color.mV[VALPHA] * drop_shadow_strength;
+			glColor4fv(shadow_color.mV);
+			LLRectf screen_rect_shadow = screen_rect;
+			screen_rect_shadow.translate(1.f, -1.f);
+			renderQuad(screen_rect_shadow, uv_rect, slant_offset);
+			glColor4fv(color.mV);
+			renderQuad(screen_rect, uv_rect, slant_offset);
+		}
 		else // normal rendering
 		{
 			glColor4fv(color.mV);
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index 75e12f0475f7d53fd59caff4293321b9b8bcc7db..28ff5f66812f163abab656c310eb84d2b619f419 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -45,7 +45,8 @@ class LLFontGL : public LLFont
 		BOLD = 1,
 		ITALIC = 2,
 		UNDERLINE = 4,
-		DROP_SHADOW = 8
+		DROP_SHADOW = 8,
+		DROP_SHADOW_SOFT = 16
 	};
 	
 	// Takes a string with potentially several flags, i.e. "NORMAL|BOLD|ITALIC"
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 9f66daf8907b09a69ea4320b25b35b10ee7c57ed..ddd81e77b3736516a037387da783b5d9d4739a31 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -628,7 +628,7 @@ void LLButton::draw()
 			mGLFont->render(label, 0, (F32)x, (F32)(LLBUTTON_V_PAD + y_offset), 
 				label_color,
 				mHAlign, LLFontGL::BOTTOM,
-				mDropShadowedText ? LLFontGL::DROP_SHADOW : LLFontGL::NORMAL,
+				mDropShadowedText ? LLFontGL::DROP_SHADOW_SOFT : LLFontGL::NORMAL,
 				U32_MAX, drawable_width,
 				NULL, FALSE, FALSE);
 		}
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index 599a85021b325a05d5e9b8a8c88d3c0e80c8ce1f..25b41e44e156e641ee036e483857cdb303c62d2b 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -102,6 +102,7 @@ void LLDragHandleTop::setTitle(const LLString& title)
 	const LLFontGL* font = gResMgr->getRes( LLFONT_SANSSERIF );
 	mTitleBox = new LLTextBox( "Drag Handle Title", mRect, trimmed_title, font );
 	mTitleBox->setFollows(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT);
+	mTitleBox->setFontStyle(LLFontGL::DROP_SHADOW_SOFT);
 	reshapeTitleBox();
 	
 	// allow empty titles, as default behavior replaces them with title box name
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 40c11c69cc4e43b7db683ff8304521214606b5f0..3da53275c7fcd5f867cc2099ab1a7e4a466168ad 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -1919,7 +1919,11 @@ void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus)
 		LLFloater* floaterp = (LLFloater*)(*view_it);
 		sendChildToFront(floaterp);
 
-		floaterp->setMinimized(FALSE);
+		// always unminimize dependee, but allow dependents to stay minimized
+		if (!floaterp->isDependent())
+		{
+			floaterp->setMinimized(FALSE);
+		}
 	}
 	floaters_to_move.clear();
 
@@ -1931,7 +1935,9 @@ void LLFloaterView::bringToFront(LLFloater* child, BOOL give_focus)
 		if (dependent)
 		{
 			sendChildToFront(dependent);
-			dependent->setMinimized(FALSE);
+			//don't un-minimize dependent windows automatically
+			// respect user's wishes
+			//dependent->setMinimized(FALSE);
 		}
 		++dependent_it;
 	}
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index f5dcae57871af92644f34ecd09cb25adc572686b..2cae50bd0490d0edeb279b87a6787e3a6d57ec42 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -497,7 +497,7 @@ void LLMenuItemGL::draw( void )
 	U8 font_style = mStyle;
 	if (LLMenuItemGL::sDropShadowText && getEnabled() && !mDrawTextDisabled )
 	{
-		font_style |= LLFontGL::DROP_SHADOW;
+		font_style |= LLFontGL::DROP_SHADOW_SOFT;
 	}
 
 	if ( getEnabled() && getHighlight() )
@@ -1728,7 +1728,7 @@ void LLMenuItemBranchDownGL::draw( void )
 	U8 font_style = mStyle;
 	if (LLMenuItemGL::sDropShadowText && getEnabled() && !mDrawTextDisabled )
 	{
-		font_style |= LLFontGL::DROP_SHADOW;
+		font_style |= LLFontGL::DROP_SHADOW_SOFT;
 	}
 
 	LLColor4 color;
diff --git a/indra/llui/lltextbox.cpp b/indra/llui/lltextbox.cpp
index 2afa32eccd8e8266acbab43be123cd9ceaf0eb5f..48ff6afbd5388d733e2dc676a469bc29fb574137 100644
--- a/indra/llui/lltextbox.cpp
+++ b/indra/llui/lltextbox.cpp
@@ -28,7 +28,7 @@ LLTextBox::LLTextBox(const LLString& name, const LLRect& rect, const LLString& t
 	mBorderColor(		LLUI::sColorsGroup->getColor( "DefaultHighlightLight" ) ),
 	mBackgroundVisible( FALSE ),
 	mBorderVisible( FALSE ),
-	mDropshadowVisible( TRUE ),
+	mFontStyle(LLFontGL::DROP_SHADOW_SOFT),
 	mBorderDropShadowVisible( FALSE ),
 	mHPad(0),
 	mVPad(0),
@@ -53,7 +53,7 @@ LLTextBox::LLTextBox(const LLString& name, const LLString& text, F32 max_width,
 	mBorderColor(LLUI::sColorsGroup->getColor("DefaultHighlightLight")),
 	mBackgroundVisible(FALSE),
 	mBorderVisible(FALSE),
-	mDropshadowVisible(TRUE),
+	mFontStyle(LLFontGL::DROP_SHADOW_SOFT),
 	mBorderDropShadowVisible(FALSE),
 	mHPad(0),
 	mVPad(0),
@@ -343,7 +343,7 @@ void LLTextBox::drawText( S32 x, S32 y, const LLColor4& color )
 			S32 line_length = *iter;
 			mFontGL->render(mText.getWString(), cur_pos, (F32)x, (F32)y, color,
 							mHAlign, mVAlign,
-							mDropshadowVisible ? LLFontGL::DROP_SHADOW : LLFontGL::NORMAL,
+							mFontStyle,
 							line_length, mRect.getWidth(), NULL, TRUE );
 			cur_pos += line_length + 1;
 			y -= llfloor(mFontGL->getLineHeight());
@@ -353,7 +353,7 @@ void LLTextBox::drawText( S32 x, S32 y, const LLColor4& color )
 	{
 		mFontGL->render(mText.getWString(), 0, (F32)x, (F32)y, color,
 						mHAlign, mVAlign, 
-						mDropshadowVisible ? LLFontGL::DROP_SHADOW : LLFontGL::NORMAL,
+						mFontStyle,
 						S32_MAX, mRect.getWidth(), NULL, TRUE);
 	}
 }
@@ -386,8 +386,6 @@ LLXMLNodePtr LLTextBox::getXML(bool save_children) const
 
 	node->createChild("border_visible", TRUE)->setBoolValue(mBorderVisible);
 
-	node->createChild("drop_shadow_visible", TRUE)->setBoolValue(mDropshadowVisible);
-
 	node->createChild("border_drop_shadow_visible", TRUE)->setBoolValue(mBorderDropShadowVisible);
 
 	node->createChild("h_pad", TRUE)->setIntValue(mHPad);
@@ -427,6 +425,12 @@ LLView* LLTextBox::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *f
 
 	text_box->initFromXML(node, parent);
 
+	LLString font_style;
+	if (node->getAttributeString("font-style", font_style))
+	{
+		text_box->mFontStyle = LLFontGL::getStyleFromString(font_style);
+	}
+
 	if(node->hasAttribute("text_color"))
 	{
 		LLColor4 color;
diff --git a/indra/llui/lltextbox.h b/indra/llui/lltextbox.h
index 56c00eb8b364c7852417e5cc4e23f755a9aad756..8972450c30f89ef7548d9e35fc103f4ce661ec52 100644
--- a/indra/llui/lltextbox.h
+++ b/indra/llui/lltextbox.h
@@ -54,7 +54,7 @@ class LLTextBox
 	
 	void			setBackgroundVisible(BOOL visible)		{ mBackgroundVisible = visible; }
 	void			setBorderVisible(BOOL visible)			{ mBorderVisible = visible; }
-	void			setDropshadowVisible(BOOL visible)		{ mDropshadowVisible = visible; }
+	void			setFontStyle(U8 style)					{ mFontStyle = style; }
 	void			setBorderDropshadowVisible(BOOL visible){ mBorderDropShadowVisible = visible; }
 	void			setHPad(S32 pixels)						{ mHPad = pixels; }
 	void			setVPad(S32 pixels)						{ mVPad = pixels; }
@@ -92,7 +92,7 @@ class LLTextBox
 	BOOL			mBackgroundVisible;
 	BOOL			mBorderVisible;
 	
-	BOOL			mDropshadowVisible;	// Draws black dropshadow below and to the right of the text.
+	U8				mFontStyle; // style bit flags for font
 	BOOL			mBorderDropShadowVisible;
 
 	S32				mHPad;
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index a589bf29f9a97efd11782977879d6b040ac75a97..e6bce27ce2e2d7a68d9ca06387f4fcf6830c4b59 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -34,8 +34,12 @@
 #include "indra_constants.h"
 
 // culled from winuser.h
+#ifndef WM_MOUSEWHEEL /* Added to be compatible with later SDK's */
 const S32	WM_MOUSEWHEEL = 0x020A;
+#endif
+#ifndef WHEEL_DELTA /* Added to be compatible with later SDK's */
 const S32	WHEEL_DELTA = 120;     /* Value for rolling one detent */
+#endif
 const S32	MAX_MESSAGE_PER_UPDATE = 20;
 const S32	BITS_PER_PIXEL = 32;
 const S32	MAX_NUM_RESOLUTIONS = 32;
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
index b71772bd939e1d8d8033e9d39f68c440aa72de2d..f7bf4de34f3abc73d29e9ee261a824dc988aca65 100644
--- a/indra/newview/llfloatertos.cpp
+++ b/indra/newview/llfloatertos.cpp
@@ -162,7 +162,6 @@ BOOL LLFloaterTOS::postBuild()
 	childSetValue("tos_text", LLSD(mMessage));	
 #endif
 
-
 	return TRUE;
 }
 
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 5c32f8d90a26422f2ce432d8eae3d432f448791c..4fde8988f586a32103017376c3a8cf96b15a55ae 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -83,7 +83,7 @@ LLNetMap::LLNetMap(
 	LLRect major_dir_rect(  0, DIR_HEIGHT, DIR_WIDTH, 0 );
 
 	mTextBoxNorth = new LLTextBox( "N", major_dir_rect );
-	mTextBoxNorth->setDropshadowVisible( TRUE );
+	mTextBoxNorth->setFontStyle(LLFontGL::DROP_SHADOW_SOFT);
 	addChild( mTextBoxNorth );
 
 	LLColor4 minor_color( 1.f, 1.f, 1.f, .7f );
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 30adea7d73fe09c649cfd47d4b3f6ce293281f34..724ef8a8476b27dfdcda9ff05b3c78d828fcd652 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -87,9 +87,13 @@ void LLPanelContents::getState(LLViewerObject *objectp )
 		return;
 	}
 
+	LLUUID group_id;			// used for SL-23488
+	gSelectMgr->selectGetGroup(group_id);  // sets group_id as a side effect SL-23488
+
 	// BUG? Check for all objects being editable?
 	BOOL editable = gAgent.isGodlike()
-					|| (objectp->permModify() && objectp->permYouOwner());
+					|| (objectp->permModify()
+					       && ( objectp->permYouOwner() || ( !group_id.isNull() && gAgent.isInGroup(group_id) )));  // solves SL-23488
 	BOOL all_volume = gSelectMgr->selectionAllPCode( LL_PCODE_VOLUME );
 
 	// Edit script button - ok if object is editable and there's an
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 4cf103508dee9f3ca067ee874ff70801b2d789b1..51ead9c5323ce9ef1e21b0f81711ef0292ba2d30 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -503,7 +503,7 @@ void LLScriptEdCore::updateDynamicHelp(BOOL immediate)
 			mLiveHelpTimer.stop();
 		}
 	}
-	else
+	else if (immediate)
 	{
 		setHelpPage("");
 	}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index cb4077b21b8a4cc6e715636ed31c03b0dbadec08..23e1ab66640f03258c4a23fd09fbb11b1ed19606 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1124,16 +1124,8 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
 	if (from_task)
 	{
 		args["[OBJECTFROMNAME]"] = info->mFromName;
-		if (name_found)
-		{
-			LLNotifyBox::showXml("ObjectGiveItem", args,
-								&inventory_offer_callback, (void*)info);
-		}
-		else
-		{
-			LLNotifyBox::showXml("ObjectGiveItemUnknownUser", args,
-								&inventory_offer_callback, (void*)info);
-		}
+		LLNotifyBox::showXml(name_found ? "ObjectGiveItem" : "ObjectGiveItemUnknownUser",
+							args, &inventory_offer_callback, (void*)info);
 	}
 	else
 	{
@@ -1633,10 +1625,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			}
 			else
 			{
-				if (dialog == IM_TASK_INVENTORY_OFFERED)
-					inventory_offer_handler(info, TRUE);
-				else
-					inventory_offer_handler(info, FALSE);
+				inventory_offer_handler(info, dialog == IM_TASK_INVENTORY_OFFERED);
 			}
 		}
 		break;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index f2769993808b4faf7f72d8fc43debbb828f50673..a9ed98e9db0639b7fe74182caf0c2baeeb66d56a 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1708,7 +1708,7 @@ void LLViewerWindow::initBase()
 	mToolTip->setBorderVisible( FALSE );
 	mToolTip->setBackgroundColor( gColors.getColor( "ToolTipBgColor" ) );
 	mToolTip->setBackgroundVisible( TRUE );
-	mToolTip->setDropshadowVisible( FALSE );
+	mToolTip->setFontStyle(LLFontGL::NORMAL);
 	mToolTip->setBorderDropshadowVisible( TRUE );
 	mToolTip->setVisible( FALSE );
 
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 9d2fb122e5c38562bb3d9f8cbc080f37e7143b45..6c99d997327f641d6fe3a6bba523591dc4670f17 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -158,7 +158,6 @@ LLWorldMapView::LLWorldMapView(const std::string& name, const LLRect& rect )
 	LLRect major_dir_rect(  0, DIR_HEIGHT, DIR_WIDTH, 0 );
 
 	mTextBoxNorth = new LLTextBox( "N", major_dir_rect );
-	mTextBoxNorth->setDropshadowVisible( TRUE );
 	addChild( mTextBoxNorth );
 
 	LLColor4 minor_color( 1.f, 1.f, 1.f, .7f );
diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp
index 17bad4bc14fc5e7d8224aa27b3acb12b71c69705..25626719ac7be7999bcc68b0de9fcb0dda3a1bb0 100644
--- a/indra/test/llhttpclient_tut.cpp
+++ b/indra/test/llhttpclient_tut.cpp
@@ -14,6 +14,10 @@
 
 #include <tut/tut.h>
 #include "linden_common.h"
+
+// These are too slow on Windows to actually include in the build. JC
+#if !LL_WINDOWS
+
 #include "lltut.h"
 #include "llhttpclient.h"
 #include "llformat.h"
@@ -313,4 +317,7 @@ namespace tut
 		LLSD body = result["body"];
 		ensure_equals("echoed result matches", body.size(), expected.size());
 	}
+
 }
+
+#endif	// !LL_WINDOWS
diff --git a/indra/test/lltut.cpp b/indra/test/lltut.cpp
index 5a6ccabec2f674ec416d57925bd7164a528a02e7..0e9a886bb8fed3599d1e453c64330ac6b7a6b31a 100644
--- a/indra/test/lltut.cpp
+++ b/indra/test/lltut.cpp
@@ -20,6 +20,8 @@ namespace tut
 	void ensure_equals(const char* msg, const LLDate& actual,
 		const LLDate& expected)
 	{
+		std::cout << "ensure_equals " << msg << std::endl;
+
 		ensure_equals(msg,
 			actual.secondsSinceEpoch(), expected.secondsSinceEpoch());
 	}
@@ -28,6 +30,8 @@ namespace tut
 	void ensure_equals(const char* msg, const LLURI& actual,
 		const LLURI& expected)
 	{
+		std::cout << "ensure_equals " << msg << std::endl;
+
 		ensure_equals(msg,
 			actual.asString(), expected.asString());
 	}
@@ -36,6 +40,8 @@ namespace tut
 	void ensure_equals(const char* msg,
 		const std::vector<U8>& actual, const std::vector<U8>& expected)
 	{
+		std::cout << "ensure_equals " << msg << std::endl;
+
 		std::string s(msg);
 		
 		ensure_equals(s + " size", actual.size(), expected.size());
@@ -54,6 +60,8 @@ namespace tut
 	void ensure_equals(const char* m, const LLSD& actual,
 		const LLSD& expected)
 	{
+		std::cout << "ensure_equals " << m << std::endl;
+
 		const std::string& msg = m;
 		
 		ensure_equals(msg + " type", actual.type(), expected.type());
@@ -129,6 +137,7 @@ namespace tut
 	void ensure_starts_with(const std::string& msg,
 		const std::string& actual, const std::string& expectedStart)
 	{
+		std::cout << "ensure_starts_with " << msg << std::endl;
 		if( actual.find(expectedStart, 0) != 0 )
 		{
 			std::stringstream ss;
@@ -141,6 +150,7 @@ namespace tut
 	void ensure_ends_with(const std::string& msg,
 		const std::string& actual, const std::string& expectedEnd)
 	{
+		std::cout << "ensure_ends_with " << msg << std::endl;
 		if( actual.size() < expectedEnd.size()
 			|| actual.rfind(expectedEnd)
 				!= (actual.size() - expectedEnd.size()) )
@@ -155,6 +165,7 @@ namespace tut
 	void ensure_contains(const std::string& msg,
 		const std::string& actual, const std::string& expectedSubString)
 	{
+		std::cout << "ensure_contains " << msg << std::endl;
 		if( actual.find(expectedSubString, 0) == std::string::npos )
 		{
 			std::stringstream ss;
@@ -167,6 +178,7 @@ namespace tut
 	void ensure_does_not_contain(const std::string& msg,
 		const std::string& actual, const std::string& expectedSubString)
 	{
+		std::cout << "ensure_does_not_contain " << msg << std::endl;
 		if( actual.find(expectedSubString, 0) != std::string::npos )
 		{
 			std::stringstream ss;