diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 5dbbcd727ce96595a088acc252abf3aa29a29689..17e7eea2f1259e3d18c4e5b26aa40eb24016e87d 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -39,7 +39,7 @@
 #include "llfloatercustomize.h"
 #include "llfloaterinventory.h"
 #include "llinventorybridge.h"
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llnotify.h"
 #include "llviewerregion.h"
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index e46cfe6af916d79271b86fe28b73d822d4f4f940..61c1081d22414ff87814cb7312a9613385e02ca1 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -38,7 +38,7 @@
 #include "llfloatercustomize.h"
 #include "llgesturemgr.h"
 #include "llinventorybridge.h"
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "llnotifications.h"
 #include "llpanelappearance.h"
 #include "llsidetray.h"
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 4d85ecb97cd522d0893844095d0540713640f0d4..38843c72215f3f96d499c2d25b886b25590b3cab 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -40,7 +40,7 @@
 #include "llfloaterbuycurrency.h"
 #include "llfilepicker.h"
 #include "llnotify.h"
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llfloaterinventory.h"
 #include "llpermissionsflags.h"
diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index e8812d87ee0501fe0be05c9fb99a68cbd65ef36a..0b10255c2f2395b8aa224dbe655fde71a90cd272 100644
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -51,7 +51,7 @@
 
 #include "llagent.h"
 #include "llbutton.h"
-//#include "llinventory.h"
+#include "llinventoryobserver.h"
 #include "llinventorymodel.h"
 #include "llnotify.h"
 #include "llresmgr.h"
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index e90d13f9d5157c539590574d56d1416f426b4c11..20a324c67c919ea7680256ee46530597054326a5 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -35,6 +35,7 @@
 
 #include "lluictrl.h"
 
+#include "llinventoryobserver.h"
 #include "llinventorymodel.h"
 
 class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index 928126bff94626dd183c2639b53441b6f2021b13..e0d4a59d9d6f6050a904d5bf565206225a864696 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -44,6 +44,7 @@
 #include "llbutton.h"
 #include "llcheckboxctrl.h"
 #include "llavataractions.h"
+#include "llinventoryobserver.h"
 #include "llinventorymodel.h"
 #include "lllineeditor.h"
 //#include "llspinctrl.h"
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 7d2eb98111f497a1cc87d1286a13f7b220c734be..85847e5fce87fce9a41892d9c700d92aef6d9615 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -51,6 +51,7 @@
 #include "llfloaterreg.h"		// getTypedInstance()
 #include "llfocusmgr.h"
 #include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "lllandmarklist.h"
 #include "lllineeditor.h"
 #include "llregionhandle.h"
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index 60ece75ceadd565485ab0f97dbe6263cadc336b6..473d0be912b1140164505d29bdb44e05eb230278 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -34,6 +34,8 @@
 #include "lldarray.h"	// JAMESDEBUG convert to std::vector
 #include "llfoldertype.h"
 #include "llfontgl.h"	// just for StyleFlags enum
+#include "llinventorytype.h"
+#include "llpermissionsflags.h"
 #include "llpointer.h"
 
 
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 6fdaefd21ab9030eb3c1f3ec8463ec492de9c448..102651f43201a42eb55647d5cd1d7bcb4f4f298a 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -38,7 +38,6 @@
 #include "llfoldervieweventlistener.h"
 #include "llinventorybridge.h"	// for LLItemBridge in LLInventorySort::operator()
 #include "llinventoryfilter.h"
-#include "llinventorymodel.h"	// *TODO: make it take a pointer to an inventory-model interface
 #include "llviewercontrol.h"	// gSavedSettings
 #include "llviewerwindow.h"		// Argh, only for setCursor()
 
diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h
index 947773d66dc18cf973af928df955ae05ba1a744b..c8b26f7309c62462c8eefb0720d34b4887afaf7a 100644
--- a/indra/newview/llgesturemgr.h
+++ b/indra/newview/llgesturemgr.h
@@ -38,7 +38,7 @@
 #include <vector>
 
 #include "llassetstorage.h"	// LLAssetType
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "llsingleton.h"
 #include "llviewerinventory.h"
 
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 3ffeb55d6cfc7971f1afc90f1eac74f8ca6e92e7..4c7b0a0517c7ed523d095c799ef7c1b3af02aac9 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -33,14 +33,16 @@
 #ifndef LL_LLINVENTORYBRIDGE_H
 #define LL_LLINVENTORYBRIDGE_H
 
-#include "llfloaterproperties.h"
-#include "llwearable.h"
-#include "llviewercontrol.h"
 #include "llcallingcard.h"
-#include "llinventorymodel.h"
+#include "llfloaterproperties.h"
 #include "llfoldervieweventlistener.h"
+#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
+#include "llviewercontrol.h"
+#include "llwearable.h"
 
 class LLInventoryPanel;
+class LLInventoryModel;
 class LLMenuGL;
 
 enum EInventoryIcon
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index ffe5f7181dd663637e7f2bae64de23491b2d78f8..a8e5c4c216edf5baf6e5ae088f3cf552e16a3038 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -39,6 +39,7 @@
 #include "llfloaterinventory.h"
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
+#include "llinventoryobserver.h"
 #include "llwindow.h"
 #include "llviewercontrol.h"
 #include "llpreview.h" 
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index bd64591194cce79d586c6bb5160b8bdb762d2035..3c1f606d5c1fd224718cbfce8c78fd2f5656d975 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -46,11 +46,6 @@
 #include <string>
 #include <vector>
 
-// ! REFACTOR ! Remove llinventoryobservers.h and have other files that need it explicitly 
-// include llinventoryobservers.h instead of llinventorymodel.h .  This will reduce dependency on
-// llinventorymodel.h.
-#include "llinventoryobserver.h" 
-
 class LLInventoryObserver;
 class LLInventoryObject;
 class LLInventoryItem;
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 8fe317a2921543a740dadb48aec5593526aa8773..7e35cfa04c201aad03cdf4dc007fe74d46ee8eec 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -45,7 +45,7 @@
 #include "lltooltip.h"
 
 // newview includes
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "lllandmarkactions.h"
 #include "lllandmarklist.h"
 #include "lllocationhistory.h"
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index 29e9baa6cf2391a655aa29303287ccac625c15da..fbc0f09c50648922b524c6056a44d7bb37b75c4e 100644
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -35,7 +35,8 @@
 #define LL_LLPANELMAININVENTORY_H
 
 #include "llpanel.h"
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
+
 #include "llfolderview.h"
 
 class LLFolderViewItem;
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 2bbb2b71536b59029f6d578a3ab052d56ed2f5fe..69edccf09fe21c940cfd830c8d4b28c4c756ff27 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -54,6 +54,7 @@
 #include "llfriendcard.h"
 #include "llgroupactions.h"
 #include "llgrouplist.h"
+#include "llinventoryobserver.h"
 #include "llpanelpeoplemenus.h"
 #include "llrecentpeople.h"
 #include "llviewercontrol.h"		// for gSavedSettings
diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h
index 506c135ca646247e24aa42257b85921b1b05550e..3b9f7f988274a74043eeb17c9606dfc546ef6e5b 100644
--- a/indra/newview/llpreview.h
+++ b/indra/newview/llpreview.h
@@ -37,7 +37,7 @@
 #include "llresizehandle.h"
 #include "llpointer.h"
 #include "lluuid.h"
-#include "llinventorymodel.h"	// LLInventoryObserver
+#include "llinventoryobserver.h"
 #include <map>
 
 class LLInventoryItem;
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index a00f580e327cd548572d4156417e270d283f58e9..28a409d3ee8063a9ca7cf3401cca628358cc4df3 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -41,7 +41,6 @@
 #include "lliconctrl.h"
 #include "llframetimer.h"
 
-
 class LLMessageSystem;
 class LLTextEditor;
 class LLButton;
@@ -52,6 +51,7 @@ struct 	LLEntryAndEdCore;
 class LLMenuBarGL;
 class LLFloaterScriptSearch;
 class LLKeywordToken;
+class LLViewerInventoryItem;
 
 // Inner, implementation class.  LLPreviewScript and LLLiveLSLEditor each own one of these.
 class LLScriptEdCore : public LLPanel
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 9d2960fbed15ce00021ba7946baa104c6283b66c..a3efea7b7e29588537dffa1eb1801b020b61312d 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -41,6 +41,7 @@
 #include "llfloaterreg.h"
 #include "llgroupactions.h"
 #include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "lllineeditor.h"
 #include "llradiogroup.h"
 #include "llviewercontrol.h"
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index de00ca8420b601f7947eba7f355c35d3c838de11..5f7c2f5080bff0c70963bbeed8d09a77f29ab591 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -48,7 +48,7 @@
 #include "llfoldervieweventlistener.h"
 #include "llinventory.h"
 #include "llinventoryfunctions.h"
-#include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llfloaterinventory.h"
 #include "lllineeditor.h"
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index 1a6171765880bb5b7e90f34df9b8f7acc80f4837..407cc23d0d70c8c6d87e7dc6450ad0c40f9e88ff 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -55,6 +55,7 @@
 #include "llhudtext.h"
 #include "llhudview.h"
 #include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "lllandmarklist.h"
 #include "llsky.h"
 #include "llui.h"
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index f0c1823def0839524f981782f0b0c11b34b0beaf..7f25e567d03be190638c2b98a2b49a09138ba1f0 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -89,6 +89,7 @@
 #include "llhudeffecttrail.h"
 #include "llhudmanager.h"
 #include "llinventorymodel.h"
+#include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llfloaterinventory.h"
 #include "llmenugl.h"