diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index b42c5237f7130e7b93bb2a518eced4e5a73d1103..a4304596de59a05aed4cebff37404d57a6079edd 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -97,7 +97,7 @@ public:
 	{
 	}
 	
-	boost::signals::connection setCallback(const LLCacheNameCallback& cb)
+	boost::signals2::connection setCallback(const LLCacheNameCallback& cb)
 	{
 		return mSignal.connect(cb);
 	}
@@ -216,7 +216,7 @@ public:
 	Impl(LLMessageSystem* msg);
 	~Impl();
 	
-	boost::signals::connection addPending(const LLUUID& id, const LLCacheNameCallback& callback);
+	boost::signals2::connection addPending(const LLUUID& id, const LLCacheNameCallback& callback);
 	void addPending(const LLUUID& id, const LLHost& host);
 	
 	void processPendingAsks();
@@ -277,10 +277,10 @@ LLCacheName::Impl::~Impl()
 	for_each(mReplyQueue.begin(), mReplyQueue.end(), DeletePointer());
 }
 
-boost::signals::connection LLCacheName::Impl::addPending(const LLUUID& id, const LLCacheNameCallback& callback)
+boost::signals2::connection LLCacheName::Impl::addPending(const LLUUID& id, const LLCacheNameCallback& callback)
 {
 	PendingReply* reply = new PendingReply(id, LLHost());
-	boost::signals::connection res = reply->setCallback(callback);
+	boost::signals2::connection res = reply->setCallback(callback);
 	mReplyQueue.push_back(reply);
 	return res;
 }
@@ -296,7 +296,7 @@ void LLCacheName::setUpstream(const LLHost& upstream_host)
 	impl.mUpstreamHost = upstream_host;
 }
 
-boost::signals::connection LLCacheName::addObserver(const LLCacheNameCallback& callback)
+boost::signals2::connection LLCacheName::addObserver(const LLCacheNameCallback& callback)
 {
 	return impl.mSignal.connect(callback);
 }
@@ -555,9 +555,9 @@ BOOL LLCacheName::getGroupName(const LLUUID& id, std::string& group)
 //  we call it immediately. -Steve
 // NOTE: Even though passing first and last name is a bit of extra overhead, it eliminates the
 //  potential need for any parsing should any code need to handle first and last name independently.
-boost::signals::connection LLCacheName::get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback)
+boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback)
 {
-	boost::signals::connection res;
+	boost::signals2::connection res;
 	
 	if(id.isNull())
 	{
@@ -601,7 +601,7 @@ boost::signals::connection LLCacheName::get(const LLUUID& id, BOOL is_group, con
 	return res;
 }
 
-boost::signals::connection LLCacheName::get(const LLUUID& id, BOOL is_group, old_callback_t callback, void* user_data)
+boost::signals2::connection LLCacheName::get(const LLUUID& id, BOOL is_group, old_callback_t callback, void* user_data)
 {
 	return get(id, is_group, boost::bind(callback, _1, _2, _3, _4, user_data));
 }
diff --git a/indra/llmessage/llcachename.h b/indra/llmessage/llcachename.h
index 414b6590f6c5271c321691f3b76bb34e9c0da572..47d49076f4a28ed1b38407a5c82ffd957472a2fc 100644
--- a/indra/llmessage/llcachename.h
+++ b/indra/llmessage/llcachename.h
@@ -34,14 +34,14 @@
 #define LL_LLCACHENAME_H
 
 #include <boost/bind.hpp>
-#include <boost/signals.hpp>
+#include <boost/signals2.hpp>
 
 class LLMessageSystem;
 class LLHost;
 class LLUUID;
 
 
-typedef boost::signal<void (const LLUUID& id,
+typedef boost::signals2::signal<void (const LLUUID& id,
 							const std::string& first_name,
 							const std::string& last_name,
 							BOOL is_group)> LLCacheNameSignal;
@@ -69,7 +69,7 @@ public:
 	// for simulators, this is the data server
 	void setUpstream(const LLHost& upstream_host);
 
-	boost::signals::connection addObserver(const LLCacheNameCallback& callback);
+	boost::signals2::connection addObserver(const LLCacheNameCallback& callback);
 
 	// janky old format. Remove after a while. Phoenix. 2008-01-30
 	void importFile(LLFILE* fp);
@@ -96,10 +96,10 @@ public:
 	// If the data is currently available, may call the callback immediatly
 	// otherwise, will request the data, and will call the callback when
 	// available.  There is no garuntee the callback will ever be called.
-	boost::signals::connection get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback);
+	boost::signals2::connection get(const LLUUID& id, BOOL is_group, const LLCacheNameCallback& callback);
 	
 	// LEGACY
-	boost::signals::connection get(const LLUUID& id, BOOL is_group, old_callback_t callback, void* user_data);
+	boost::signals2::connection get(const LLUUID& id, BOOL is_group, old_callback_t callback, void* user_data);
 
 	// This method needs to be called from time to time to send out
 	// requests.
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 4d340b3dddce17d376249e11804385f662ea73f4..f2aa9c0d4c5d4c1dc4c0c1fcef084164f538e009 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -244,43 +244,43 @@ void LLButton::onCommit()
 	LLUICtrl::onCommit();
 }
 
-boost::signals::connection LLButton::setClickedCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLButton::setClickedCallback( const commit_signal_t::slot_type& cb )
 {
 	return mCommitSignal.connect(cb);
 }
-boost::signals::connection LLButton::setMouseDownCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLButton::setMouseDownCallback( const commit_signal_t::slot_type& cb )
 {
 	return mMouseDownSignal.connect(cb);
 }
-boost::signals::connection LLButton::setMouseUpCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLButton::setMouseUpCallback( const commit_signal_t::slot_type& cb )
 {
 	return mMouseUpSignal.connect(cb);
 }
-boost::signals::connection LLButton::setHeldDownCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLButton::setHeldDownCallback( const commit_signal_t::slot_type& cb )
 {
 	return mHeldDownSignal.connect(cb);
 }
 														  
-boost::signals::connection LLButton::setRightClickedCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLButton::setRightClickedCallback( const commit_signal_t::slot_type& cb )
 {
 	return mRightClickSignal.connect(cb);
 }
 
 
 // *TODO: Deprecate (for backwards compatability only)
-boost::signals::connection LLButton::setClickedCallback( button_callback_t cb, void* data )
+boost::signals2::connection LLButton::setClickedCallback( button_callback_t cb, void* data )
 {
 	return setClickedCallback(boost::bind(cb, data));
 }
-boost::signals::connection LLButton::setMouseDownCallback( button_callback_t cb, void* data )
+boost::signals2::connection LLButton::setMouseDownCallback( button_callback_t cb, void* data )
 {
 	return setMouseDownCallback(boost::bind(cb, data));
 }
-boost::signals::connection LLButton::setMouseUpCallback( button_callback_t cb, void* data )
+boost::signals2::connection LLButton::setMouseUpCallback( button_callback_t cb, void* data )
 {
 	return setMouseUpCallback(boost::bind(cb, data));
 }
-boost::signals::connection LLButton::setHeldDownCallback( button_callback_t cb, void* data )
+boost::signals2::connection LLButton::setHeldDownCallback( button_callback_t cb, void* data )
 {
 	return setHeldDownCallback(boost::bind(cb, data));
 }
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index c7969e260d16bfc8aa538084dada1d1cd1b85e32..1398e5c14bd1d85837205cf7661e6317f16ccfc3 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -151,20 +151,20 @@ public:
 	void			setUnselectedLabelColor( const LLColor4& c )		{ mUnselectedLabelColor = c; }
 	void			setSelectedLabelColor( const LLColor4& c )			{ mSelectedLabelColor = c; }
 
-	boost::signals::connection setClickedCallback( const commit_signal_t::slot_type& cb ); // mouse down and up within button
-	boost::signals::connection setMouseDownCallback( const commit_signal_t::slot_type& cb );
-	boost::signals::connection setMouseUpCallback( const commit_signal_t::slot_type& cb ); // mouse up, EVEN IF NOT IN BUTTON
+	boost::signals2::connection setClickedCallback( const commit_signal_t::slot_type& cb ); // mouse down and up within button
+	boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setMouseUpCallback( const commit_signal_t::slot_type& cb ); // mouse up, EVEN IF NOT IN BUTTON
 	// Passes a 'count' parameter in the commit param payload, i.e. param["count"])
-	boost::signals::connection setHeldDownCallback( const commit_signal_t::slot_type& cb ); // Mouse button held down and in button
-	boost::signals::connection setRightClickedCallback( const commit_signal_t::slot_type& cb ); // right mouse down and up within button
+	boost::signals2::connection setHeldDownCallback( const commit_signal_t::slot_type& cb ); // Mouse button held down and in button
+	boost::signals2::connection setRightClickedCallback( const commit_signal_t::slot_type& cb ); // right mouse down and up within button
 
 
 	
 	// *TODO: Deprecate (for backwards compatability only)
-	boost::signals::connection setClickedCallback( button_callback_t cb, void* data );
-	boost::signals::connection setMouseDownCallback( button_callback_t cb, void* data );
-	boost::signals::connection setMouseUpCallback( button_callback_t cb, void* data );
-	boost::signals::connection setHeldDownCallback( button_callback_t cb, void* data );
+	boost::signals2::connection setClickedCallback( button_callback_t cb, void* data );
+	boost::signals2::connection setMouseDownCallback( button_callback_t cb, void* data );
+	boost::signals2::connection setMouseUpCallback( button_callback_t cb, void* data );
+	boost::signals2::connection setHeldDownCallback( button_callback_t cb, void* data );
 		
 	void			setHeldDownDelay( F32 seconds, S32 frames = 0)		{ mHeldDownDelay = seconds; mHeldDownFrameDelay = frames; }
 	
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 0d7d1ae746ee7912af4319a2f596b723764cd6a3..526e1c2583a19a4eacdfa76657775bdda22250b2 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -286,12 +286,12 @@ public:
 	
 	//virtual void draw();
 	
-	boost::signals::connection setClickCallback( const commit_signal_t::slot_type& cb )
+	boost::signals2::connection setClickCallback( const commit_signal_t::slot_type& cb )
 	{
 		return setCommitCallback(cb);
 	}
 	
-	boost::signals::connection setEnableCallback( const enable_signal_t::slot_type& cb )
+	boost::signals2::connection setEnableCallback( const enable_signal_t::slot_type& cb )
 	{
 		return mEnableSignal.connect(cb);
 	}
@@ -336,7 +336,7 @@ public:
 	// called to rebuild the draw label
 	virtual void buildDrawLabel( void );
 	
-	boost::signals::connection setCheckCallback( const enable_signal_t::slot_type& cb )
+	boost::signals2::connection setCheckCallback( const enable_signal_t::slot_type& cb )
 	{
 		return mCheckSignal.connect(cb);
 	}
@@ -834,7 +834,7 @@ private:
 
 // *TODO: Eliminate
 // For backwards compatability only; generally just use boost::bind
-class view_listener_t : public boost::signals::trackable
+class view_listener_t : public boost::signals2::trackable
 {
 public:
 	virtual bool handleEvent(const LLSD& userdata) = 0;
diff --git a/indra/llui/llmultislider.h b/indra/llui/llmultislider.h
index 9c01b528a7778fb50426ff29caf07574683e0245..89d44eaa87fbb57bbe6de6c1831f6dd4e1f435e1 100644
--- a/indra/llui/llmultislider.h
+++ b/indra/llui/llmultislider.h
@@ -78,8 +78,8 @@ public:
 	/*virtual*/ void	setValue(const LLSD& value);
 	/*virtual*/ LLSD	getValue() const		{ return mValue; }
 
-	boost::signals::connection setMouseDownCallback( const commit_signal_t::slot_type& cb ) { return mMouseDownSignal.connect(cb); }
-	boost::signals::connection setMouseUpCallback(	const commit_signal_t::slot_type& cb )   { return mMouseUpSignal.connect(cb); }
+	boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb ) { return mMouseDownSignal.connect(cb); }
+	boost::signals2::connection setMouseUpCallback(	const commit_signal_t::slot_type& cb )   { return mMouseUpSignal.connect(cb); }
 
 	bool			findUnusedValue(F32& initVal);
 	const std::string&	addSlider();
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index 4bbfc639762acd61fb009e7c7f2289146aaa299b..312aceaaa27613d2f7cfc772bcf7683e21d3b455 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -460,12 +460,12 @@ void LLMultiSliderCtrl::setPrecision(S32 precision)
 	updateText();
 }
 
-boost::signals::connection LLMultiSliderCtrl::setSliderMouseDownCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLMultiSliderCtrl::setSliderMouseDownCallback( const commit_signal_t::slot_type& cb )
 {
 	return mMultiSlider->setMouseDownCallback( cb );
 }
 
-boost::signals::connection LLMultiSliderCtrl::setSliderMouseUpCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLMultiSliderCtrl::setSliderMouseUpCallback( const commit_signal_t::slot_type& cb )
 {
 	return mMultiSlider->setMouseUpCallback( cb );
 }
diff --git a/indra/llui/llmultisliderctrl.h b/indra/llui/llmultisliderctrl.h
index 85ba77b7df327eb4e6aec945bdab8af5e6951275..4855ed492637f18bb3e774c2e96fa222a6846960 100644
--- a/indra/llui/llmultisliderctrl.h
+++ b/indra/llui/llmultisliderctrl.h
@@ -115,8 +115,8 @@ public:
 	void			setLabelColor(const LLColor4& c)			{ mTextEnabledColor = c; }
 	void			setDisabledLabelColor(const LLColor4& c)	{ mTextDisabledColor = c; }
 
-	boost::signals::connection setSliderMouseDownCallback( const commit_signal_t::slot_type& cb );
-	boost::signals::connection setSliderMouseUpCallback( const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setSliderMouseDownCallback( const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setSliderMouseUpCallback( const commit_signal_t::slot_type& cb );
 
 	virtual void	onTabInto();
 
diff --git a/indra/llui/llslider.h b/indra/llui/llslider.h
index 39c55afd8cd57a8eb207c83e61d43f910093afb9..dad65fcce0564014160b7100d80b3cb7a2ac27d4 100644
--- a/indra/llui/llslider.h
+++ b/indra/llui/llslider.h
@@ -67,8 +67,8 @@ public:
 	virtual void	setMinValue(F32 min_value) { LLF32UICtrl::setMinValue(min_value); updateThumbRect(); }
 	virtual void	setMaxValue(F32 max_value) { LLF32UICtrl::setMaxValue(max_value); updateThumbRect(); }
 
-	boost::signals::connection setMouseDownCallback( const commit_signal_t::slot_type& cb ) { return mMouseDownSignal.connect(cb); }
-	boost::signals::connection setMouseUpCallback(	const commit_signal_t::slot_type& cb )   { return mMouseUpSignal.connect(cb); }
+	boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb ) { return mMouseDownSignal.connect(cb); }
+	boost::signals2::connection setMouseUpCallback(	const commit_signal_t::slot_type& cb )   { return mMouseUpSignal.connect(cb); }
 
 	virtual BOOL	handleHover(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleMouseUp(S32 x, S32 y, MASK mask);
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index de2c9759b758a6d2319cb8da23b6f82f563a60d2..3abd960792fcd42aed97883de0c02ef3f34a1fc5 100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
@@ -375,12 +375,12 @@ void LLSliderCtrl::setPrecision(S32 precision)
 	updateText();
 }
 
-boost::signals::connection LLSliderCtrl::setSliderMouseDownCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLSliderCtrl::setSliderMouseDownCallback( const commit_signal_t::slot_type& cb )
 {
 	return mSlider->setMouseDownCallback( cb );
 }
 
-boost::signals::connection LLSliderCtrl::setSliderMouseUpCallback( const commit_signal_t::slot_type& cb )
+boost::signals2::connection LLSliderCtrl::setSliderMouseUpCallback( const commit_signal_t::slot_type& cb )
 {
 	return mSlider->setMouseUpCallback( cb );
 }
diff --git a/indra/llui/llsliderctrl.h b/indra/llui/llsliderctrl.h
index 0bcb1ccc9b627ca309a479a2ef21da3a5d1625f8..5bdbbfcbccfb1b327906707df75306073a539438 100644
--- a/indra/llui/llsliderctrl.h
+++ b/indra/llui/llsliderctrl.h
@@ -111,8 +111,8 @@ public:
 	void			setLabelColor(const LLColor4& c)			{ mTextEnabledColor = c; }
 	void			setDisabledLabelColor(const LLColor4& c)	{ mTextDisabledColor = c; }
 
-	boost::signals::connection setSliderMouseDownCallback(	const commit_signal_t::slot_type& cb );
-	boost::signals::connection setSliderMouseUpCallback( const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setSliderMouseDownCallback(	const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setSliderMouseUpCallback( const commit_signal_t::slot_type& cb );
 
 	/*virtual*/ void	onTabInto();
 
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index 8aba122e39c276124732c7f3501cf2f3b56877bd..7b378fd9c7fa71b75d843cb38830e77b985ae2ed 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -840,11 +840,11 @@ LLUICtrl* LLUICtrl::getParentUICtrl() const
 }
 
 // *TODO: Deprecate; for backwards compatability only:
-boost::signals::connection LLUICtrl::setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data)
+boost::signals2::connection LLUICtrl::setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data)
 {
 	return setCommitCallback( boost::bind(cb, _1, data));
 }
-boost::signals::connection LLUICtrl::setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb )
+boost::signals2::connection LLUICtrl::setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb )
 {
 	return mValidateSignal.connect(boost::bind(cb, _2));
 }
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 686f1e966d98e93b97d8ea7774fa0747fac6058b..6dfbd9cf8beceded60f13f076ffcf3faa87ef242 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -74,16 +74,16 @@ protected:
 };
 
 class LLUICtrl
-	: public LLView, public LLFocusableElement, public boost::signals::trackable
+	: public LLView, public LLFocusableElement, public boost::signals2::trackable
 {
 public:
 
 
 	typedef boost::function<void (LLUICtrl* ctrl, const LLSD& param)> commit_callback_t;
-	typedef boost::signal<void (LLUICtrl* ctrl, const LLSD& param)> commit_signal_t;
+	typedef boost::signals2::signal<void (LLUICtrl* ctrl, const LLSD& param)> commit_signal_t;
 	
 	typedef boost::function<bool (LLUICtrl* ctrl, const LLSD& param)> enable_callback_t;
-	typedef boost::signal<bool (LLUICtrl* ctrl, const LLSD& param), boost_boolean_combiner> enable_signal_t;
+	typedef boost::signals2::signal<bool (LLUICtrl* ctrl, const LLSD& param), boost_boolean_combiner> enable_signal_t;
 	
 	struct CallbackParam : public LLInitParam::Block<CallbackParam>
 	{
@@ -244,12 +244,12 @@ public:
 
 	LLUICtrl*		getParentUICtrl() const;
 
-	boost::signals::connection setCommitCallback( const commit_signal_t::slot_type& cb ) { return mCommitSignal.connect(cb); }
-	boost::signals::connection setValidateCallback( const enable_signal_t::slot_type& cb ) { return mValidateSignal.connect(cb); }
+	boost::signals2::connection setCommitCallback( const commit_signal_t::slot_type& cb ) { return mCommitSignal.connect(cb); }
+	boost::signals2::connection setValidateCallback( const enable_signal_t::slot_type& cb ) { return mValidateSignal.connect(cb); }
 	
 	// *TODO: Deprecate; for backwards compatability only:
-	boost::signals::connection setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data);	
-	boost::signals::connection setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb );
+	boost::signals2::connection setCommitCallback( boost::function<void (LLUICtrl*,void*)> cb, void* data);	
+	boost::signals2::connection setValidateBeforeCommit( boost::function<bool (const LLSD& data)> cb );
 	
 	LLUICtrl* findRootMostFocusRoot();
 
@@ -278,15 +278,15 @@ protected:
     LLViewModelPtr  mViewModel;
 
 	LLControlVariable* mControlVariable;
-	boost::signals::connection mControlConnection;
+	boost::signals2::connection mControlConnection;
 	LLControlVariable* mEnabledControlVariable;
-	boost::signals::connection mEnabledControlConnection;
+	boost::signals2::connection mEnabledControlConnection;
 	LLControlVariable* mDisabledControlVariable;
-	boost::signals::connection mDisabledControlConnection;
+	boost::signals2::connection mDisabledControlConnection;
 	LLControlVariable* mMakeVisibleControlVariable;
-	boost::signals::connection mMakeVisibleControlConnection;
+	boost::signals2::connection mMakeVisibleControlConnection;
 	LLControlVariable* mMakeInvisibleControlVariable;
-	boost::signals::connection mMakeInvisibleControlConnection;
+	boost::signals2::connection mMakeInvisibleControlConnection;
 private:
 
 	BOOL			mTabStop;
diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
index 1782c20a7e3b0955dd7b162285f7247f8683cc30..37939a0908ada28dcb3128604cae3ab4d3bddc0f 100644
--- a/indra/llxml/llcontrol.h
+++ b/indra/llxml/llcontrol.h
@@ -56,7 +56,7 @@
 #endif
 
 #include <boost/bind.hpp>
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 #if LL_WINDOWS
 # if (_MSC_VER >= 1300 && _MSC_VER < 1400)
@@ -92,8 +92,8 @@ class LLControlVariable : public LLRefCount, boost::noncopyable
 	friend class LLControlGroup;
 	
 public:
-	typedef boost::signal<bool(LLControlVariable* control, const LLSD&), boost_boolean_combiner> validate_signal_t;
-	typedef boost::signal<void(LLControlVariable* control, const LLSD&)> commit_signal_t;
+	typedef boost::signals2::signal<bool(LLControlVariable* control, const LLSD&), boost_boolean_combiner> validate_signal_t;
+	typedef boost::signals2::signal<void(LLControlVariable* control, const LLSD&)> commit_signal_t;
 
 private:
 	std::string		mName;
@@ -332,10 +332,6 @@ public:
 
 	~LLControlCache()
 	{
-		if(mConnection.connected())
-		{
-			mConnection.disconnect();
-		}
 	}
 
 	const T& getValue() const { return mCachedValue; }
@@ -378,7 +374,7 @@ private:
 private:
     T							mCachedValue;
 	eControlType				mType;
-    boost::signals::connection	mConnection;
+    boost::signals2::scoped_connection	mConnection;
 };
 
 template <typename T>
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 1c72e9c5aca4a182283ed2b25d0b0eacd35ce6f9..d8e844d2917b72df5169fd38a36c800b1b5fcb51 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -119,7 +119,7 @@ void LLNotificationChiclet::setCounter(S32 counter)
 	mCounterText->setText(stream.str());
 }
 
-boost::signals::connection LLNotificationChiclet::setClickCallback(
+boost::signals2::connection LLNotificationChiclet::setClickCallback(
 	const commit_callback_t& cb)
 {
 	return mButton->setClickedCallback(cb);
@@ -142,7 +142,7 @@ LLChiclet::~LLChiclet()
 
 }
 
-boost::signals::connection LLChiclet::setLeftButtonClickCallback(
+boost::signals2::connection LLChiclet::setLeftButtonClickCallback(
 	const commit_callback_t& cb)
 {
 	return mCommitSignal.connect(cb);
@@ -587,7 +587,7 @@ void LLChicletPanel::onRightScrollClick()
 	scrollRight();
 }
 
-boost::signals::connection LLChicletPanel::setChicletClickCallback(
+boost::signals2::connection LLChicletPanel::setChicletClickCallback(
 	const commit_callback_t& cb)
 {
 	return mCommitSignal.connect(cb);
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index f2b859a090cb63cc0b71820c02ebf207729610de..11c3356c461a1a0391a72a4651da56e4fb8d4ccf 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -60,7 +60,7 @@ public:
 
 	virtual bool getShowCounter() {return mShowCounter;};
 
-	virtual boost::signals::connection setLeftButtonClickCallback(
+	virtual boost::signals2::connection setLeftButtonClickCallback(
 		const commit_callback_t& cb);
 
 protected:
@@ -158,7 +158,7 @@ public:
 
 	S32 getCounter() {return mCounter;};
 
-	boost::signals::connection setClickCallback(const commit_callback_t& cb);
+	boost::signals2::connection setClickCallback(const commit_callback_t& cb);
 
 	virtual ~ LLNotificationChiclet();
 
@@ -212,7 +212,7 @@ public:
 
 	void onRightScrollClick();
 
-	boost::signals::connection setChicletClickCallback(
+	boost::signals2::connection setChicletClickCallback(
 		const commit_callback_t& cb);
 
 	void onChicletClick(LLUICtrl*ctrl,const LLSD&param);
diff --git a/indra/newview/llfloatergroups.h b/indra/newview/llfloatergroups.h
index b49d38ccd03e02e577937446f3c8f45190451217..0425b812944842b2d6e15beba3bf0c6a6e06915e 100644
--- a/indra/newview/llfloatergroups.h
+++ b/indra/newview/llfloatergroups.h
@@ -48,7 +48,7 @@
 #include "llfloater.h"
 #include <map>
 #include <boost/function.hpp>
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 class LLUICtrl;
 class LLTextBox;
@@ -62,8 +62,8 @@ class LLFloaterGroupPicker : public LLFloater, public LLUIFactory<LLFloaterGroup
 public:
 	~LLFloaterGroupPicker();
 	
-	// Note: Don't return connection; use boost::bind + boost::signal::trackable to disconnect slots
-	typedef boost::signal<void (LLUUID id)> signal_t;	
+	// Note: Don't return connection; use boost::bind + boost::signals2::trackable to disconnect slots
+	typedef boost::signals2::signal<void (LLUUID id)> signal_t;	
 	void setSelectGroupCallback(const signal_t::slot_type& cb) { mGroupSelectSignal.connect(cb); }
 	void setPowersMask(U64 powers_mask);
 	BOOL postBuild();
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 848d289bb9968bed3a0a7f3bc610e0bc63a12ef7..9d91f0d64ec4ab437839dbb05514bc23662bd058 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -45,8 +45,7 @@
 #include <map>
 #include <deque>
 #include <boost/function.hpp>
-#include <boost/signal.hpp>
-#include <boost/signals/connection.hpp>
+#include <boost/signals2.hpp>
 
 #include "lluictrl.h"
 #include "v4color.h"
@@ -768,7 +767,7 @@ public:
 	void setFilterPermMask(PermissionMask filter_perm_mask) { mFilter.setFilterPermissions(filter_perm_mask); }
 	void setAllowMultiSelect(BOOL allow) { mAllowMultiSelect = allow; }
 	
-	typedef boost::signal<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)> signal_t;
+	typedef boost::signals2::signal<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)> signal_t;
 	void setSelectCallback(const signal_t::slot_type& cb) { mSelectSignal.connect(cb); }
 	void setReshapeCallback(const signal_t::slot_type& cb) { mReshapeSignal.connect(cb); }
 	
diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h
index fce4b8d42b558765ab8dc9c19786b98b32748bff..40ac80e8bcef607ae87a0046f849da42c385b6f2 100644
--- a/indra/newview/llrecentpeople.h
+++ b/indra/newview/llrecentpeople.h
@@ -39,7 +39,7 @@
 
 #include <vector>
 #include <set>
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 /**
  * List of people the agent recently interacted with.
@@ -56,7 +56,7 @@ class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LL
 {
 	LOG_CLASS(LLRecentPeople);
 public:
-	typedef boost::signal<void ()> signal_t;
+	typedef boost::signals2::signal<void ()> signal_t;
 	
 	/**
 	 * Add specified avatar to the list if it's not there already.
@@ -84,7 +84,7 @@ public:
 	 * 
 	 * Multiple callbacks can be set.
 	 * 
-	 * @return no connection; use boost::bind + boost::signal::trackable to disconnect slots.
+	 * @return no connection; use boost::bind + boost::signals2::trackable to disconnect slots.
 	 */
 	void setChangedCallback(const signal_t::slot_type& cb) { mChangedSignal.connect(cb); }
 
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
index 6fc120d920c57741a2c340d01570793cc6ee806c..99389017cb117fcc854d8872bf0f7b899b09793e 100644
--- a/indra/newview/llteleporthistory.cpp
+++ b/indra/newview/llteleporthistory.cpp
@@ -162,7 +162,7 @@ void LLTeleportHistory::updateCurrentLocation()
 	onHistoryChanged();
 }
 
-boost::signals::connection LLTeleportHistory::setHistoryChangedCallback(history_callback_t cb)
+boost::signals2::connection LLTeleportHistory::setHistoryChangedCallback(history_callback_t cb)
 {
 	return mHistoryChangedSignal.connect(cb);
 }
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
index 5be3dc171ffdda49582e57fe8fac71a7a8cc1e9a..c68aabe9a19370b2916796d2d891eeebf8d3bc00 100644
--- a/indra/newview/llteleporthistory.h
+++ b/indra/newview/llteleporthistory.h
@@ -38,8 +38,7 @@
 #include <vector>
 #include <string>
 #include <boost/function.hpp>
-#include <boost/signal.hpp>
-#include <boost/signals/connection.hpp>
+#include <boost/signals2.hpp>
 
 
 /**
@@ -81,7 +80,7 @@ public:
 	
 	typedef std::vector<LLTeleportHistoryItem>	slurl_list_t;
 	typedef boost::function<void()>				history_callback_t;
-	typedef boost::signal  <void()>				history_signal_t;
+	typedef boost::signals2::signal<void()>		history_signal_t;
 	
 	LLTeleportHistory();
 	~LLTeleportHistory();
@@ -126,7 +125,7 @@ public:
 	 * 
 	 * Multiple callbacks can be set.
 	 */
-	boost::signals::connection	setHistoryChangedCallback(history_callback_t cb);
+	boost::signals2::connection	setHistoryChangedCallback(history_callback_t cb);
 	
 	/**
 	 * Save history to a file so that we can restore it on startup.
@@ -212,14 +211,14 @@ private:
 	 * Using this connection we get notified when a teleport finishes
 	 * or initial location update occurs.
 	 */
-	boost::signals::connection	mTeleportFinishedConn;
+	boost::signals2::connection	mTeleportFinishedConn;
 	
 	/**
 	 * Teleport failure notification connection.
 	 * 
 	 * Using this connection we get notified when a teleport fails.
 	 */
-	boost::signals::connection	mTeleportFailedConn;
+	boost::signals2::connection	mTeleportFailedConn;
 };
 
 #endif
diff --git a/indra/newview/lltoolpipette.h b/indra/newview/lltoolpipette.h
index fcccafe1a4f785a1d9ab465f5c118a2bd17b8ff8..3b6ebec67e97f95b70428de5f229044e86dab848 100644
--- a/indra/newview/lltoolpipette.h
+++ b/indra/newview/lltoolpipette.h
@@ -41,7 +41,7 @@
 #include "lltool.h"
 #include "lltextureentry.h"
 #include <boost/function.hpp>
-#include <boost/signal.hpp>
+#include <boost/signals2.hpp>
 
 class LLViewerObject;
 class LLPickInfo;
@@ -58,8 +58,8 @@ public:
 	virtual BOOL	handleHover(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleToolTip(S32 x, S32 y, std::string& msg, LLRect *sticky_rect_screen);
 
-	// Note: Don't return connection; use boost::bind + boost::signal::trackable to disconnect slots
-	typedef boost::signal<void (const LLTextureEntry& te)> signal_t;
+	// Note: Don't return connection; use boost::bind + boost::signals2::trackable to disconnect slots
+	typedef boost::signals2::signal<void (const LLTextureEntry& te)> signal_t;
 	void setToolSelectCallback(const signal_t::slot_type& cb) { mSignal.connect(cb); }
 	void setResult(BOOL success, const std::string& msg);
 	
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 8aa1663bc1149f6bbadea266fdd4c58ae3f8e8ac..bcb3853106fcf2667e89a81ebff1e8544ca32513 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -2392,17 +2392,17 @@ LLViewerImage* LLViewerParcelMgr::getPassImage() const
 	return sPassImage;
 }
 
-boost::signals::connection LLViewerParcelMgr::setAgentParcelChangedCallback(parcel_changed_callback_t cb)
+boost::signals2::connection LLViewerParcelMgr::setAgentParcelChangedCallback(parcel_changed_callback_t cb)
 {
 	return mAgentParcelChangedSignal.connect(cb);
 }
 
-boost::signals::connection LLViewerParcelMgr::setTeleportFinishedCallback(parcel_changed_callback_t cb)
+boost::signals2::connection LLViewerParcelMgr::setTeleportFinishedCallback(parcel_changed_callback_t cb)
 {
 	return mTeleportFinishedSignal.connect(cb);
 }
 
-boost::signals::connection LLViewerParcelMgr::setTeleportFailedCallback(parcel_changed_callback_t cb)
+boost::signals2::connection LLViewerParcelMgr::setTeleportFailedCallback(parcel_changed_callback_t cb)
 {
 	return mTeleportFailedSignal.connect(cb);
 }
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 4bed1c04862c9a6c593c1f3cbed4c67ce6cfa347..dc6c2a628734dd01b81df035d91e9275856e5112 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -41,8 +41,7 @@
 #include "llui.h"
 
 #include <boost/function.hpp>
-#include <boost/signal.hpp>
-#include <boost/signals/connection.hpp>
+#include <boost/signals2.hpp>
 
 class LLUUID;
 class LLMessageSystem;
@@ -84,7 +83,7 @@ class LLViewerParcelMgr : public LLSingleton<LLViewerParcelMgr>
 
 public:
 	typedef boost::function<void()> parcel_changed_callback_t;
-	typedef boost::signal  <void()> parcel_changed_signal_t;
+	typedef boost::signals2::signal<void()> parcel_changed_signal_t;
 
 	LLViewerParcelMgr();
 	~LLViewerParcelMgr();
@@ -263,9 +262,9 @@ public:
 	// the agent is banned or not in the allowed group
 	BOOL isCollisionBanned();
 
-	boost::signals::connection setAgentParcelChangedCallback(parcel_changed_callback_t cb);
-	boost::signals::connection setTeleportFinishedCallback(parcel_changed_callback_t cb);
-	boost::signals::connection setTeleportFailedCallback(parcel_changed_callback_t cb);
+	boost::signals2::connection setAgentParcelChangedCallback(parcel_changed_callback_t cb);
+	boost::signals2::connection setTeleportFinishedCallback(parcel_changed_callback_t cb);
+	boost::signals2::connection setTeleportFailedCallback(parcel_changed_callback_t cb);
 	void onTeleportFinished();
 	void onTeleportFailed();