diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 6978e6a430c4e4b1a74dd197365d0a0d1b6564eb..43465d42099fb7150ceefa1591eb592ef51e3c25 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -660,8 +660,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
 
 	mBtnEdit	->setToggleState( edit_visible );
 	mRadioGroupEdit->setVisible( edit_visible );
-	bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
-	getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
+	//bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");
+	//getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost);
 
 	mBtnLink->setVisible(edit_visible);
 	mBtnUnlink->setVisible(edit_visible);
diff --git a/indra/newview/llfolderviewmodelinventory.cpp b/indra/newview/llfolderviewmodelinventory.cpp
index dff1e1be90f63e227fdd4272d030818bd21f400f..e8135496d58b4d09e4692699bad4c5ae8ec663a0 100644
--- a/indra/newview/llfolderviewmodelinventory.cpp
+++ b/indra/newview/llfolderviewmodelinventory.cpp
@@ -109,7 +109,7 @@ bool LLFolderViewModelInventory::contentsReady()
 void LLFolderViewModelItemInventory::requestSort()
 {
 	LLFolderViewModelItemCommon::requestSort();
-	if (mRootViewModel->getSorter().isByDate())
+	if (mRootViewModel.getSorter().isByDate())
 	{
 		// sort by date potentially affects parent folders which use a date
 		// derived from newest item in them
@@ -123,14 +123,14 @@ void LLFolderViewModelItemInventory::requestSort()
 bool LLFolderViewModelItemInventory::potentiallyVisible()
 {
 	return passedFilter() // we've passed the filter
-		|| getLastFilterGeneration() < mRootViewModel->getFilter()->getFirstSuccessGeneration() // or we don't know yet
+		|| getLastFilterGeneration() < mRootViewModel.getFilter()->getFirstSuccessGeneration() // or we don't know yet
 		|| descendantsPassedFilter();
 }
 
 bool LLFolderViewModelItemInventory::passedFilter(S32 filter_generation) 
 { 
-	if (filter_generation < 0 && mRootViewModel) 
-		filter_generation = mRootViewModel->getFilter()->getFirstSuccessGeneration();
+	if (filter_generation < 0) 
+		filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration();
 
 	return mPassedFolderFilter 
 		&& mLastFilterGeneration >= filter_generation
@@ -139,7 +139,7 @@ bool LLFolderViewModelItemInventory::passedFilter(S32 filter_generation)
 
 bool LLFolderViewModelItemInventory::descendantsPassedFilter(S32 filter_generation)
 { 
-	if (filter_generation < 0) filter_generation = mRootViewModel->getFilter()->getFirstSuccessGeneration();
+	if (filter_generation < 0) filter_generation = mRootViewModel.getFilter()->getFirstSuccessGeneration();
 	return mMostFilteredDescendantGeneration >= filter_generation; 
 }
 
diff --git a/indra/newview/llfolderviewmodelinventory.h b/indra/newview/llfolderviewmodelinventory.h
index 12a977b28b5314c44f24bd5efd66193a29a7ee06..eb2a4bfdec3670fcf67a15d94073b3939e8ca7f9 100644
--- a/indra/newview/llfolderviewmodelinventory.h
+++ b/indra/newview/llfolderviewmodelinventory.h
@@ -37,13 +37,9 @@ class LLFolderViewModelItemInventory
 	:	public LLFolderViewModelItemCommon
 {
 public:
-	LLFolderViewModelItemInventory()
-		:	mRootViewModel(NULL)
+	LLFolderViewModelItemInventory(class LLFolderViewModelInventory& root_view_model)
+	:	mRootViewModel(root_view_model)
 	{}
-	void setRootViewModel(class LLFolderViewModelInventory* root_view_model)
-	{
-		mRootViewModel = root_view_model;
-	}
 	virtual const LLUUID& getUUID() const = 0;
 	virtual time_t getCreationDate() const = 0;	// UTC seconds
 	virtual void setCreationDate(time_t creation_date_utc) = 0;
@@ -70,7 +66,7 @@ class LLFolderViewModelItemInventory
 	virtual LLToolDragAndDrop::ESource getDragSource() const = 0;
 
 protected:
-	class LLFolderViewModelInventory* mRootViewModel;
+	class LLFolderViewModelInventory& mRootViewModel;
 };
 
 class LLInventorySort
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index d17c25d9f31d1d36fa00f795f30e1fd7d50e0789..9f1d4bdec967706c0c6ac73aa3cab73935e23745 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -190,7 +190,8 @@ LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory,
 	mUUID(uuid), 
 	mRoot(root),
 	mInvType(LLInventoryType::IT_NONE),
-	mIsLink(FALSE)
+	mIsLink(FALSE),
+	LLFolderViewModelItemInventory(inventory->getRootViewModel())
 {
 	mInventoryPanel = inventory->getInventoryPanelHandle();
 	const LLInventoryObject* obj = getInventoryObject();
@@ -1158,7 +1159,6 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
 	if (new_listener)
 	{
 		new_listener->mInvType = inv_type;
-		new_listener->setRootViewModel(view_model);
 	}
 
 	return new_listener;
@@ -6484,7 +6484,6 @@ LLInvFVBridge* LLRecentInventoryBridgeBuilder::createBridge(
 		&& actual_asset_type != LLAssetType::AT_LINK_FOLDER)
 	{
 		new_listener = new LLRecentItemsFolderBridge(inv_type, inventory, root, uuid);
-		new_listener->setRootViewModel(view_model);
 	}
 	else
 	{
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 4fcc93b0c4e6a1a849258f554b1c77a51fb9bb16..910325cdbc33bfaa7a1d1a9e1aa8dae75ebad725 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -104,6 +104,7 @@ class LLInventoryPanel : public LLPanel
 
 public:
 	LLInventoryModel* getModel() { return mInventory; }
+	LLFolderViewModelInventory& getRootViewModel() { return mInventoryViewModel; }
 
 	// LLView methods
 	void draw();
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 937d3bb8c502fdb57542634353f0f9cb53dc216d..9bd716e90030eba304f4d2add06c49a574fa48e8 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -155,7 +155,8 @@ LLTaskInvFVBridge::LLTaskInvFVBridge(
 	LLPanelObjectInventory* panel,
 	const LLUUID& uuid,
 	const std::string& name,
-	U32 flags):
+	U32 flags)
+:	LLFolderViewModelItemInventory(panel->getRootViewModel()),
 	mUUID(uuid),
 	mName(name),
 	mPanel(panel),
@@ -1915,7 +1916,10 @@ void LLPanelObjectInventory::idle(void* user_data)
 {
 	LLPanelObjectInventory* self = (LLPanelObjectInventory*)user_data;
 
-
+	if (self->mFolders)
+	{
+		self->mFolders->update();
+	}
 	if (self->mInventoryNeedsUpdate)
 	{
 		self->updateInventory();
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
index 7e857f8b31cc8c1a315283eff1abe49281862681..593fb43b6d45a99952fee2e7c02b88b4242bf02d 100644
--- a/indra/newview/llpanelobjectinventory.h
+++ b/indra/newview/llpanelobjectinventory.h
@@ -56,6 +56,8 @@ class LLPanelObjectInventory : public LLPanel, public LLVOInventoryListener
 	
 	virtual BOOL postBuild();
 
+	LLFolderViewModelInventory& getRootViewModel() { return mInventoryViewModel; }
+
 	void doToSelected(const LLSD& userdata);
 	
 	void refresh();
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
index af29ab7ea93a59f5acdcf5eabc5f696086a2d205..1a5f64e295b3a83ba918764397120960f36f66f3 100644
--- a/indra/newview/llplacesinventorybridge.cpp
+++ b/indra/newview/llplacesinventorybridge.cpp
@@ -165,7 +165,6 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
 			llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 		}
 		new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, root, uuid, flags);
-		new_listener->setRootViewModel(view_model);
 		break;
 	case LLAssetType::AT_CATEGORY:
 		if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
@@ -183,7 +182,6 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
 			break;
 		}
 		new_listener = new LLPlacesFolderBridge(inv_type, inventory, root, uuid);
-		new_listener->setRootViewModel(view_model);
 		break;
 	default:
 		new_listener = LLInventoryFVBridgeBuilder::createBridge(