diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index ce1131f45cf88b1de465e8a1bd9c6d391694997d..46c64ec45b8f6cde6fd17c14a29930681f5ff3a4 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -522,6 +522,9 @@ void LLLandmarksPanel::setParcelID(const LLUUID& parcel_id)
 {
 	if (!parcel_id.isNull())
 	{
+        //ext-4655, defensive. remove now incase this gets called twice without a remove
+        LLRemoteParcelInfoProcessor::getInstance()->removeObserver(parcel_id, this);
+        
 		LLRemoteParcelInfoProcessor::getInstance()->addObserver(parcel_id, this);
 		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(parcel_id);
 	}
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index f0dc493ebee14f0a580c1b49212d6e530666a353..423dbfe9db35b85cb1964d22f0a40dbeb950d42c 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -210,6 +210,9 @@ void LLPanelPickInfo::sendParcelInfoRequest()
 {
 	if (mParcelId != mRequestedId)
 	{
+        //ext-4655, remove now incase this gets called twice without a remove
+        LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedId, this);
+        
 		LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelId, this);
 		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelId);
 
diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp
index 1446088c4fe24ec6a166f260479aaed18c1556b4..0b189df08d4f6bd91d0834a1622ac01538956cbd 100644
--- a/indra/newview/llpanelplace.cpp
+++ b/indra/newview/llpanelplace.cpp
@@ -202,6 +202,9 @@ void LLPanelPlace::sendParcelInfoRequest()
 {
 	if (mParcelID != mRequestedID)
 	{
+        //ext-4655, remove now incase this gets called twice without a remove
+        LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedID, this);
+
 		LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this);
 		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID);
 
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 99e48cca6d061f016a2fd015576b7671f4ff28d6..10e2c1e08052cfe99a54eca0fe073abf25997c03 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -133,6 +133,10 @@ void LLPanelPlaceInfo::sendParcelInfoRequest()
 {
 	if (mParcelID != mRequestedID)
 	{
+        //ext-4655, defensive. remove now incase this gets called twice without a remove
+        //as panel never closes its ok atm (but wrong :) 
+        LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedID, this);
+
 		LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this);
 		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID);