Removed shell.h. Cleaned up the nested includes mess in wine/obj_*.h.

diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index d5c0d19..58bd774 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -22,12 +22,13 @@
  *      limited in functionality too.
  */
 
+#include "winerror.h"
+#include "winbase.h"
 #include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 #include "commctrl.h"
 #include "imagelist.h"
 #include "debugtools.h"
-#include "winerror.h"
 
 DEFAULT_DEBUG_CHANNEL(imagelist);
 
diff --git a/dlls/commdlg/cdlg.h b/dlls/commdlg/cdlg.h
index 79121f6..0fd5b39 100644
--- a/dlls/commdlg/cdlg.h
+++ b/dlls/commdlg/cdlg.h
@@ -88,7 +88,7 @@
 #define PD32_MILIMETERS                       1587
 
 #include "commctrl.h"
-#include "wine/undocshell.h"
+#include "shlobj.h"
 #include "shellapi.h"
 
 /* IMAGELIST */
diff --git a/dlls/ole32/antimoniker.c b/dlls/ole32/antimoniker.c
index 4aa4e30..0c8da5c 100644
--- a/dlls/ole32/antimoniker.c
+++ b/dlls/ole32/antimoniker.c
@@ -8,6 +8,9 @@
 #include "winbase.h"
 #include "winerror.h"
 #include "wine/unicode.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
+#include "wine/obj_storage.h"
 #include "wine/obj_moniker.h"
 #include "debugtools.h"
 
diff --git a/dlls/ole32/bindctx.c b/dlls/ole32/bindctx.c
index 39a1e61..11034c7 100644
--- a/dlls/ole32/bindctx.c
+++ b/dlls/ole32/bindctx.c
@@ -7,7 +7,11 @@
 #include <string.h>
 #include <assert.h>
 #include "winerror.h"
+#include "winbase.h"
 #include "wine/unicode.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
+#include "wine/obj_storage.h"
 #include "wine/obj_moniker.h"
 #include "debugtools.h"
 #include "heap.h"
diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c
index a53c627..60ab1c8 100644
--- a/dlls/ole32/compositemoniker.c
+++ b/dlls/ole32/compositemoniker.c
@@ -7,6 +7,10 @@
 #include "winbase.h"
 #include "winerror.h"
 #include "debugtools.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
+#include "wine/obj_storage.h"
+#include "wine/obj_moniker.h"
 #include "wine/obj_inplace.h"
 #include "wine/unicode.h"
 #include "ole2.h"
diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c
index d2213b9..3126edb 100644
--- a/dlls/ole32/datacache.c
+++ b/dlls/ole32/datacache.c
@@ -35,6 +35,11 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "winerror.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
+#include "wine/obj_storage.h"
+#include "wine/obj_moniker.h"
+#include "wine/obj_dataobject.h"
 #include "wine/obj_oleview.h"
 #include "wine/obj_cache.h"
 #include "wine/unicode.h"
diff --git a/dlls/ole32/errorinfo.c b/dlls/ole32/errorinfo.c
index d336efe..92e96e1 100644
--- a/dlls/ole32/errorinfo.c
+++ b/dlls/ole32/errorinfo.c
@@ -14,6 +14,8 @@
 #include "winerror.h"
 #include "thread.h"
 #include "debugtools.h"
+#include "wine/obj_base.h"
+#include "wine/obj_oleaut.h"
 #include "wine/obj_errorinfo.h"
 #include "wine/unicode.h"
 
diff --git a/dlls/ole32/itemmoniker.c b/dlls/ole32/itemmoniker.c
index efa31e2..a2c9171 100644
--- a/dlls/ole32/itemmoniker.c
+++ b/dlls/ole32/itemmoniker.c
@@ -4,13 +4,15 @@
  *           Copyright 1999  Noomen Hamza
  ***************************************************************************************/
 
-#include "wine/obj_base.h"
-#include "wine/obj_moniker.h"
-#include "winbase.h"
-
 #include <assert.h>
 #include "winerror.h"
+#include "winbase.h"
 #include "debugtools.h"
+#include "wine/winestring.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
+#include "wine/obj_storage.h"
+#include "wine/obj_moniker.h"
 #include "wine/obj_inplace.h"
 #include "wine/unicode.h"
 
diff --git a/dlls/ole32/moniker.c b/dlls/ole32/moniker.c
index 2666eb6..f75373d 100644
--- a/dlls/ole32/moniker.c
+++ b/dlls/ole32/moniker.c
@@ -7,6 +7,11 @@
 
 #include <assert.h>
 #include "winerror.h"
+#include "wtypes.h"
+#include "winbase.h"
+#include "wine/obj_base.h"
+#include "wine/obj_storage.h"
+#include "wine/obj_misc.h"
 #include "wine/obj_moniker.h"
 #include "debugtools.h"
 #include "heap.h"
diff --git a/dlls/ole32/ole2impl.c b/dlls/ole32/ole2impl.c
index 9e165ba..0c7c324 100644
--- a/dlls/ole32/ole2impl.c
+++ b/dlls/ole32/ole2impl.c
@@ -4,10 +4,11 @@
  * Copyright (C) 1999-2000 Abey George
  */
 
-#include "ole2.h"
+#include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
 #include "debugtools.h"
+#include "ole2.h"
 #include "olestd.h"
 #include "winreg.h"
 
diff --git a/dlls/ole32/ole2stubs.c b/dlls/ole32/ole2stubs.c
index f04c760..695a6fc 100644
--- a/dlls/ole32/ole2stubs.c
+++ b/dlls/ole32/ole2stubs.c
@@ -5,13 +5,14 @@
  * Move these functions to dlls/ole32/ole2impl.c when you implement them.
  */
 
-#include "ole2.h"
 #include "windef.h"
+#include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
+#include "ole2.h"
 #include "debugtools.h"
 
-DEFAULT_DEBUG_CHANNEL(ole)
+DEFAULT_DEBUG_CHANNEL(ole);
 
 /******************************************************************************
  *               OleCreateLinkToFile        [OLE32.96]
diff --git a/dlls/ole32/stg_bigblockfile.c b/dlls/ole32/stg_bigblockfile.c
index e02b076..d67a3cf 100644
--- a/dlls/ole32/stg_bigblockfile.c
+++ b/dlls/ole32/stg_bigblockfile.c
@@ -26,6 +26,7 @@
 
 #include "winbase.h"
 #include "winerror.h"
+#include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 #include "ole2.h"
 
diff --git a/dlls/ole32/stg_stream.c b/dlls/ole32/stg_stream.c
index 5331e28..f5b0d9a 100644
--- a/dlls/ole32/stg_stream.c
+++ b/dlls/ole32/stg_stream.c
@@ -16,11 +16,10 @@
 #include "winbase.h"
 #include "winerror.h"
 #include "debugtools.h"
-#include "wine/obj_storage.h"
 
 #include "storage32.h"
 
-DEFAULT_DEBUG_CHANNEL(storage)
+DEFAULT_DEBUG_CHANNEL(storage);
 
 
 /*
diff --git a/dlls/ole32/storage32.h b/dlls/ole32/storage32.h
index 6fd1eb7..b1dddad 100644
--- a/dlls/ole32/storage32.h
+++ b/dlls/ole32/storage32.h
@@ -17,6 +17,7 @@
 
 #include "wtypes.h"
 #include "winnt.h"
+#include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 
 /*
diff --git a/dlls/oleaut32/connpt.c b/dlls/oleaut32/connpt.c
index dcbaa8a..05b56f3 100644
--- a/dlls/oleaut32/connpt.c
+++ b/dlls/oleaut32/connpt.c
@@ -9,6 +9,8 @@
 
 #include <assert.h>
 #include "winerror.h"
+#include "winbase.h"
+#include "wingdi.h"
 #include "olectl.h"
 #include "wine/obj_base.h"
 #include "wine/obj_connection.h"
diff --git a/dlls/oleaut32/olefont.c b/dlls/oleaut32/olefont.c
index e5b8a6c..28e3ff4 100644
--- a/dlls/oleaut32/olefont.c
+++ b/dlls/oleaut32/olefont.c
@@ -9,6 +9,8 @@
 #include <assert.h>
 #include <string.h>
 #include "winerror.h"
+#include "winbase.h"
+#include "wingdi.h"
 #include "wine/unicode.h"
 #include "oleauto.h"    /* for SysAllocString(....) */
 #include "wine/obj_olefont.h"
diff --git a/dlls/olepro32/olepro32stubs.c b/dlls/olepro32/olepro32stubs.c
index 7c2c3b3..532589c 100644
--- a/dlls/olepro32/olepro32stubs.c
+++ b/dlls/olepro32/olepro32stubs.c
@@ -7,6 +7,7 @@
  */
 
 #include "debugtools.h"
+#include "winbase.h"
 #include "ole2.h"
 #include "windef.h"
 
diff --git a/dlls/shell32/classes.c b/dlls/shell32/classes.c
index 5fb04c8..85cfd59 100644
--- a/dlls/shell32/classes.c
+++ b/dlls/shell32/classes.c
@@ -11,11 +11,11 @@
 #include "winerror.h"
 #include "winreg.h"
 
-#include "wine/obj_queryassociations.h"
 #include "shlobj.h"
 #include "shell32_main.h"
 #include "shlguid.h"
 #include "shresdef.h"
+#include "wine/obj_queryassociations.h"
 
 DEFAULT_DEBUG_CHANNEL(shell);
 
diff --git a/dlls/shell32/enumidlist.c b/dlls/shell32/enumidlist.c
index a75d15b..7578934 100644
--- a/dlls/shell32/enumidlist.c
+++ b/dlls/shell32/enumidlist.c
@@ -8,10 +8,10 @@
 #include <string.h>
 #include "debugtools.h"
 #include "winreg.h"
-#include "wine/obj_base.h"
-#include "wine/obj_enumidlist.h"
 #include "wine/undocshell.h"
 #include "winerror.h"
+#include "wine/obj_base.h"
+#include "wine/obj_enumidlist.h"
 
 #include "pidl.h"
 #include "shlguid.h"
diff --git a/dlls/shell32/memorystream.c b/dlls/shell32/memorystream.c
index ad21002..7e85ccd 100644
--- a/dlls/shell32/memorystream.c
+++ b/dlls/shell32/memorystream.c
@@ -11,13 +11,14 @@
 
 #include <string.h>
 
-#include "wine/obj_storage.h"
-#include "heap.h"
+#include "winbase.h"
 #include "winerror.h"
+#include "shlobj.h"
 #include "debugtools.h"
+#include "heap.h"
 #include "shell32_main.h"
 
-DEFAULT_DEBUG_CHANNEL(shell)
+DEFAULT_DEBUG_CHANNEL(shell);
 
 static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVOID *ppvObj);
 static ULONG WINAPI IStream_fnAddRef(IStream *iface);
diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c
index 9a201a1..4efba8c 100644
--- a/dlls/shell32/pidl.c
+++ b/dlls/shell32/pidl.c
@@ -13,15 +13,15 @@
 #include <string.h>
 #include "winbase.h"
 #include "debugtools.h"
-#include "shell.h"
 #include "shlguid.h"
 #include "winerror.h"
 #include "winnls.h"
+#include "wine/winestring.h"
+#include "wine/undocshell.h"
 #include "shell32_main.h"
 #include "shellapi.h"
 
 #include "pidl.h"
-#include "wine/undocshell.h"
 
 DEFAULT_DEBUG_CHANNEL(pidl);
 DECLARE_DEBUG_CHANNEL(shell);
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index 1e6f779..4208e2d 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -6,7 +6,6 @@
 #define __WINE_SHELL_MAIN_H
 
 #include "commctrl.h"
-#include "shell.h"
 #include "docobj.h"
 
 #include "wine/obj_shellfolder.h"
@@ -63,10 +62,6 @@
 */
 BOOL WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList);
 
-HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl);
-HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl);
-HRESULT WINAPI StrRetToStrN (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl);
-
 /* Iconcache */
 #define INVALID_INDEX -1
 BOOL SIC_Initialize(void);
@@ -165,6 +160,10 @@
 /* file operation */
 BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI);
 
+HGLOBAL16 WINAPI InternalExtractIcon16(HINSTANCE16,LPCSTR,UINT16,WORD);
+
+extern HINSTANCE SHELL_FindExecutable(LPCSTR,LPCSTR ,LPSTR);
+
 inline static BOOL SHELL_OsIsUnicode(void)
 {
     /* if high-bit of version is 0, we are emulating NT */
diff --git a/dlls/shell32/shellfolder.h b/dlls/shell32/shellfolder.h
index c2db02c..54f3993 100644
--- a/dlls/shell32/shellfolder.h
+++ b/dlls/shell32/shellfolder.h
@@ -7,7 +7,6 @@
 #define __WINE_SHELLFOLDER_HELP_H
 
 #include "winbase.h"
-#include "shell.h"
 
 #include "wine/obj_base.h"
 #include "wine/obj_shellfolder.h"
diff --git a/dlls/shell32/shellguid.c b/dlls/shell32/shellguid.c
index 9821204..bad0aa0 100644
--- a/dlls/shell32/shellguid.c
+++ b/dlls/shell32/shellguid.c
@@ -6,6 +6,8 @@
  *  this in in a single file due to interfering definitions
  *
  */
+#include "winbase.h"
+
 #include "initguid.h"
 
 #include "shlwapi.h"
diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index 895d493..25cef1c 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -8,14 +8,14 @@
 #include <string.h>
 #include "debugtools.h"
 #include "winerror.h"
+#include "winbase.h"
+#include "winnls.h"
 
-#include "wine/obj_base.h"
-#include "wine/obj_storage.h"
-#include "wine/obj_shelllink.h"
+#include "shlobj.h"
+#include "wine/winestring.h"
 #include "wine/undocshell.h"
 
 #include "heap.h"
-#include "winnls.h"
 #include "pidl.h"
 #include "shell32_main.h"
 #include "shlguid.h"
diff --git a/dlls/shell32/shellstring.c b/dlls/shell32/shellstring.c
index fac7cbe..0fc4762 100644
--- a/dlls/shell32/shellstring.c
+++ b/dlls/shell32/shellstring.c
@@ -8,6 +8,7 @@
 #include "debugtools.h"
 #include "heap.h"
 
+#include "shlobj.h"
 #include "shlwapi.h"
 #include "shellapi.h"
 #include "shell32_main.h"
@@ -26,17 +27,17 @@
  * NOTES
  *  the pidl is for STRRET OFFSET
  */
-HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)
+HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
 {
         return StrRetToBufA( src, pidl, dest, len );
 }
 
-HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)
+HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
 {
         return StrRetToBufW( src, pidl, dest, len );
 }
 
-HRESULT WINAPI StrRetToStrNAW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)
+HRESULT WINAPI StrRetToStrNAW (LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
 {
 	if(SHELL_OsIsUnicode())
 	  return StrRetToStrNW (dest, len, src, pidl);
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 14c2b3c..c19b3ad 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -4,10 +4,10 @@
 #include <string.h>
 #include "debugtools.h"
 #include "shellapi.h"
-#include "shell32_main.h"
 
 #include "shlobj.h"
 #include "shresdef.h"
+#include "shell32_main.h"
 #include "wine/undocshell.h"
 
 DEFAULT_DEBUG_CHANNEL(shell);
diff --git a/dlls/shell32/shlfolder.c b/dlls/shell32/shlfolder.c
index 6ff64d7..dad9895f 100644
--- a/dlls/shell32/shlfolder.c
+++ b/dlls/shell32/shlfolder.c
@@ -14,11 +14,13 @@
 
 #include "debugtools.h"
 #include "winerror.h"
+#include "winbase.h"
 
 #include "oleidl.h"
 #include "shlguid.h"
 
 #include "pidl.h"
+#include "wine/winestring.h"
 #include "wine/obj_base.h"
 #include "wine/obj_dragdrop.h"
 #include "wine/obj_shellfolder.h"
@@ -30,7 +32,7 @@
 #define INITGUID
 #include "initguid.h"
 #include "shellfolder.h"
-
+#include "wine/obj_queryassociations.h"
 
 DEFAULT_DEBUG_CHANNEL(shell)
 
diff --git a/dlls/shell32/shlmenu.c b/dlls/shell32/shlmenu.c
index fc191ff..09840a6 100644
--- a/dlls/shell32/shlmenu.c
+++ b/dlls/shell32/shlmenu.c
@@ -3,6 +3,7 @@
  */
 #include <string.h>
 
+#include "shlobj.h"
 #include "wine/obj_base.h"
 #include "wine/obj_enumidlist.h"
 #include "wine/obj_shellfolder.h"
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 318aa6e..d885f1b 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -27,15 +27,7 @@
 
 #include "servprov.h"
 #include "shlguid.h"
-#include "wine/obj_base.h"
-#include "wine/obj_shellfolder.h"
-#include "wine/obj_shellview.h"
-#include "wine/obj_oleview.h"
-#include "wine/obj_commdlgbrowser.h"
-#include "wine/obj_shellbrowser.h"
-#include "wine/obj_dockingwindowframe.h"
-#include "wine/obj_extracticon.h"
-#include "wine/obj_dragdrop.h"
+#include "shlobj.h"
 #include "wine/undocshell.h"
 #include "shresdef.h"
 #include "debugtools.h"
diff --git a/dlls/shell32/shv_bg_cmenu.c b/dlls/shell32/shv_bg_cmenu.c
index 43e12ce..e058a04 100644
--- a/dlls/shell32/shv_bg_cmenu.c
+++ b/dlls/shell32/shv_bg_cmenu.c
@@ -16,10 +16,9 @@
 
 #include "shell32_main.h"
 #include "shellfolder.h"
-#include "shell.h" /* DROPFILESTRUCT */
 #include "wine/undocshell.h"
 
-DEFAULT_DEBUG_CHANNEL(shell)
+DEFAULT_DEBUG_CHANNEL(shell);
 
 /**************************************************************************
 *  IContextMenu Implementation
diff --git a/dlls/shell32/systray.c b/dlls/shell32/systray.c
index 1279a33..e766b41 100644
--- a/dlls/shell32/systray.c
+++ b/dlls/shell32/systray.c
@@ -13,12 +13,13 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "heap.h"
+#include "wine/winestring.h"
+#include "shlobj.h"
 #include "shellapi.h"
 #include "shell32_main.h"
-#include "windows.h"
 #include "commctrl.h"
 #include "debugtools.h"
+#include "heap.h"
 #include "config.h"
 
 DEFAULT_DEBUG_CHANNEL(shell)
diff --git a/dlls/shlwapi/regstream.c b/dlls/shlwapi/regstream.c
index 20a683d..2952ca6 100644
--- a/dlls/shlwapi/regstream.c
+++ b/dlls/shlwapi/regstream.c
@@ -4,8 +4,9 @@
 #include <string.h>
 
 #include "winerror.h"
+#include "winbase.h"
 #include "winreg.h"
-#include "wine/obj_storage.h"
+#include "shlobj.h"
 
 #include "heap.h"
 #include "debugtools.h"
diff --git a/dlls/shlwapi/shlwapi_main.c b/dlls/shlwapi/shlwapi_main.c
index ea38f35..b94b975 100644
--- a/dlls/shlwapi/shlwapi_main.c
+++ b/dlls/shlwapi/shlwapi_main.c
@@ -10,6 +10,7 @@
 #include "debugtools.h"
 
 #include "initguid.h"
+#include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 
 DEFAULT_DEBUG_CHANNEL(shell);
diff --git a/dlls/shlwapi/string.c b/dlls/shlwapi/string.c
index 1932617..c9bd12a 100644
--- a/dlls/shlwapi/string.c
+++ b/dlls/shlwapi/string.c
@@ -5,10 +5,13 @@
 
 #include "winerror.h"
 #include "windef.h"
+#include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
 #include "shlwapi.h"
+#include "shlobj.h"
 #include "wine/unicode.h"
+#include "wine/winestring.h"
 #include "heap.h"
 #include "debugtools.h"
 
@@ -332,7 +335,7 @@
  * NOTES
  *  the pidl is for STRRET OFFSET
  */
-HRESULT WINAPI StrRetToBufA (LPSTRRET src, LPITEMIDLIST pidl, LPSTR dest, DWORD len)
+HRESULT WINAPI StrRetToBufA (LPSTRRET src, const ITEMIDLIST *pidl, LPSTR dest, DWORD len)
 {
 	TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl);
 
@@ -370,7 +373,7 @@
  * NOTES
  *  the pidl is for STRRET OFFSET
  */
-HRESULT WINAPI StrRetToBufW (LPSTRRET src, LPITEMIDLIST pidl, LPWSTR dest, DWORD len)
+HRESULT WINAPI StrRetToBufW (LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, DWORD len)
 {
 	TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl);
 
diff --git a/include/dlgs.h b/include/dlgs.h
index 5e16c81..8296eb0 100644
--- a/include/dlgs.h
+++ b/include/dlgs.h
@@ -5,8 +5,6 @@
 #ifndef __WINE_DLGS_H
 #define __WINE_DLGS_H
 
-#include "wine/obj_shellview.h"
-
 #define ctlFirst    0x0400
 #define ctlLast     0x04ff
     /* Push buttons */
diff --git a/include/main.h b/include/main.h
index 9957927..4472072 100644
--- a/include/main.h
+++ b/include/main.h
@@ -14,4 +14,6 @@
 extern BOOL RELAY_Init(void);
 extern int RELAY_ShowDebugmsgRelay(const char *func);
 
+extern void SHELL_LoadRegistry(void);
+
 #endif  /* __WINE_MAIN_H */
diff --git a/include/ocidl.h b/include/ocidl.h
index bce3185..a96328c 100644
--- a/include/ocidl.h
+++ b/include/ocidl.h
@@ -1,10 +1,14 @@
 #ifndef __WINE_OCIDL_H
 #define __WINE_OCIDL_H
 
+#include "windows.h"
+#include "ole2.h"
 
 #include "wine/obj_base.h"
 
 /* the following depend only on obj_base.h */
+#include "wine/obj_storage.h"
+#include "wine/obj_oleaut.h"
 #include "wine/obj_olefont.h"
 #include "wine/obj_picture.h"
 
diff --git a/include/ole2.h b/include/ole2.h
index 49a8a31..607f025 100644
--- a/include/ole2.h
+++ b/include/ole2.h
@@ -7,9 +7,11 @@
 
 #include "windef.h"
 #include "winerror.h"
+#include "wine/obj_base.h"
+#include "wine/obj_misc.h"
 #include "wine/obj_storage.h"
 #include "wine/obj_moniker.h"
-#include "wine/obj_base.h"
+#include "wine/obj_dataobject.h"
 #include "wine/obj_dragdrop.h"
 #include "wine/obj_inplace.h"
 #include "wine/obj_oleobj.h"
diff --git a/include/oleauto.h b/include/oleauto.h
index 44529e7..8b8a4b9 100644
--- a/include/oleauto.h
+++ b/include/oleauto.h
@@ -2,6 +2,7 @@
 #define __WINE_OLEAUTO_H
 
 #include "wtypes.h"
+#include "wine/obj_base.h"
 #include "wine/obj_oleaut.h"
 #include "wine/obj_errorinfo.h"
 
diff --git a/include/oleidl.h b/include/oleidl.h
index 6abc662..9be7af4 100644
--- a/include/oleidl.h
+++ b/include/oleidl.h
@@ -3,6 +3,7 @@
 
 
 #include "wine/obj_base.h"
+#include "wine/obj_misc.h"
 
 /* the following depend only on obj_base.h */
 #include "wine/obj_storage.h"
diff --git a/include/shell.h b/include/shell.h
deleted file mode 100644
index df5f509..0000000
--- a/include/shell.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 				Shell Library definitions
- */
-#ifndef __WINE_SHELL_H
-#define __WINE_SHELL_H
-
-#include "windef.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* defined(__cplusplus) */
-
-/****************************************************************************
-* shell 16
-*/
-extern void SHELL_LoadRegistry(void);
-
-/* global functions used from shell32 */
-extern HINSTANCE SHELL_FindExecutable(LPCSTR,LPCSTR ,LPSTR);
-extern HGLOBAL16 WINAPI InternalExtractIcon16(HINSTANCE16,LPCSTR,UINT16,WORD);
-
-/****************************************************************************
-* shell 32
-*/
-/****************************************************************************
-* common return codes 
-*/
-#define SHELL_ERROR_SUCCESS           0L
-#define SHELL_ERROR_BADDB             1L
-#define SHELL_ERROR_BADKEY            2L
-#define SHELL_ERROR_CANTOPEN          3L
-#define SHELL_ERROR_CANTREAD          4L
-#define SHELL_ERROR_CANTWRITE         5L
-#define SHELL_ERROR_OUTOFMEMORY       6L
-#define SHELL_ERROR_INVALID_PARAMETER 7L
-#define SHELL_ERROR_ACCESS_DENIED     8L
-
-/****************************************************************************
-* common shell file structures 
-*/
-/******************************
-* DRAG&DROP API
-*/
-typedef struct { 	   /* structure for dropped files */ 
-	WORD		wSize;
-	POINT16		ptMousePos;   
-	BOOL16		fInNonClientArea;
-	/* memory block with filenames follows */     
-} DROPFILESTRUCT16, *LPDROPFILESTRUCT16; 
-
-typedef struct { 	   /* structure for dropped files */ 
-	DWORD		lSize;
-	POINT		ptMousePos;   
-	BOOL		fInNonClientArea;
-        BOOL          fWideChar;
-	/* memory block with filenames follows */     
-} DROPFILESTRUCT, *LPDROPFILESTRUCT; 
-
-
-/****************************************************************************
-* SHITEMID, ITEMIDLIST, PIDL API 
-*/
-#include "pshpack1.h"
-typedef struct 
-{ WORD	cb;	/* nr of bytes in this item */
-  BYTE	abID[1];/* first byte in this item */
-} SHITEMID,*LPSHITEMID;
-typedef LPSHITEMID const LPCSHITEMID;
-
-typedef struct 
-{ SHITEMID mkid; /* first itemid in list */
-} ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
-#include "poppack.h"
-
-BOOL WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath);
-BOOL WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath);
-#define  SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
-
-/****************************************************************************
-* SHAddToRecentDocs API
-*/
-#define SHARD_PIDL      0x00000001L
-#define SHARD_PATH      0x00000002L
-
-DWORD WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
-
-/****************************************************************************
-*  other functions
-*/
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif /* defined(__cplusplus) */
-
-#endif  /* __WINE_SHELL_H */
diff --git a/include/shlobj.h b/include/shlobj.h
index bd0347a..6a93b93 100644
--- a/include/shlobj.h
+++ b/include/shlobj.h
@@ -1,20 +1,9 @@
 #ifndef __WINE_SHLOBJ_H
 #define __WINE_SHLOBJ_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_shelllink.h"
-#include "wine/obj_shellfolder.h"
-#include "wine/obj_shellbrowser.h"
-#include "wine/obj_contextmenu.h"
-#include "wine/obj_shellextinit.h"
-#include "wine/obj_extracticon.h"
-#include "wine/obj_commdlgbrowser.h"
-#include "wine/obj_dockingwindowframe.h"
-
 #include "windef.h"
 #include "winbase.h"	/* WIN32_FIND_* */
 #include "ole2.h"
-#include "shell.h"
 #include "commctrl.h"
 #include "prsht.h"
 
@@ -22,6 +11,42 @@
 extern "C" {
 #endif /* defined(__cplusplus) */
 
+/****************************************************************************
+* SHITEMID, ITEMIDLIST, PIDL API 
+*/
+#include "pshpack1.h"
+typedef struct
+{
+    WORD cb;      /* nr of bytes in this item */
+    BYTE abID[1]; /* first byte in this item */
+} SHITEMID, *LPSHITEMID;
+typedef LPSHITEMID const LPCSHITEMID;
+
+typedef struct _ITEMIDLIST
+{
+    SHITEMID mkid; /* first itemid in list */
+} ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
+#include "poppack.h"
+
+BOOL WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath);
+BOOL WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath);
+#define     SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
+
+
+#include "wine/obj_base.h"
+#include "wine/obj_enumidlist.h"
+#include "wine/obj_inplace.h"
+#include "wine/obj_oleaut.h"
+#include "wine/obj_shellfolder.h"
+#include "wine/obj_shellview.h"
+#include "wine/obj_shelllink.h"
+#include "wine/obj_shellbrowser.h"
+#include "wine/obj_contextmenu.h"
+#include "wine/obj_shellextinit.h"
+#include "wine/obj_extracticon.h"
+#include "wine/obj_commdlgbrowser.h"
+#include "wine/obj_dockingwindowframe.h"
+
 /*****************************************************************************
  * Predeclare interfaces
  */
@@ -96,6 +121,16 @@
 #define IShellIcon_GetIconOf(p,a,b,c)         ICOM_CALL3(GetIconOf,p,a,b,c)
 
 /****************************************************************************
+* SHAddToRecentDocs API
+*/
+#define SHARD_PIDL      0x00000001L
+#define SHARD_PATHA     0x00000002L
+#define SHARD_PATHW     0x00000003L
+#define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
+
+DWORD WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
+
+/****************************************************************************
  * Shell Execute API
  */
 #define SE_ERR_FNF              2       /* file not found */
diff --git a/include/shlwapi.h b/include/shlwapi.h
index 1f4f5df..6d41ebb 100644
--- a/include/shlwapi.h
+++ b/include/shlwapi.h
@@ -1,9 +1,7 @@
 #ifndef __WINE_SHLWAPI_H
 #define __WINE_SHLWAPI_H
 
-#include "windef.h"
-#include "wine/obj_queryassociations.h"
-#include "wine/obj_shellfolder.h"
+#include "objbase.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -113,10 +111,10 @@
 LPWSTR WINAPI StrDupW(LPCWSTR lpSrc);
 #define StrDup WINELIB_NAME_AW(StrDup)
 
-HRESULT WINAPI StrRetToBufA(LPSTRRET src, LPITEMIDLIST pidl, LPSTR dest,
-			    DWORD len);
-HRESULT WINAPI StrRetToBufW(LPSTRRET src, LPITEMIDLIST pidl, LPWSTR dest,
-			    DWORD len);
+struct _STRRET;
+struct _ITEMIDLIST;
+HRESULT WINAPI StrRetToBufA(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPSTR dest, DWORD len);
+HRESULT WINAPI StrRetToBufW(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPWSTR dest, DWORD len);
 #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
 
 void WINAPI PathRemoveBlanksA(LPSTR lpszPath);
diff --git a/include/windows.h b/include/windows.h
index 5196ef2..d623ed1 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -9,7 +9,6 @@
 #include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
-#include "shell.h"
 #include "winreg.h"
 #include "winnetwk.h"
 #include "winver.h"
diff --git a/include/wine/obj_cache.h b/include/wine/obj_cache.h
index d47f845..8c5f664 100644
--- a/include/wine/obj_cache.h
+++ b/include/wine/obj_cache.h
@@ -7,11 +7,6 @@
 #ifndef __WINE_WINE_OBJ_CACHE_H
 #define __WINE_WINE_OBJ_CACHE_H
 
-
-#include "wine/obj_storage.h"
-#include "wine/obj_moniker.h"
-#include "wine/obj_dataobject.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_channel.h b/include/wine/obj_channel.h
index 20d6a91..843f53e 100644
--- a/include/wine/obj_channel.h
+++ b/include/wine/obj_channel.h
@@ -5,8 +5,6 @@
 #ifndef __WINE_WINE_OBJ_CHANNEL_H
 #define __WINE_WINE_OBJ_CHANNEL_H
 
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_clientserver.h b/include/wine/obj_clientserver.h
index 5add397..76c6958 100644
--- a/include/wine/obj_clientserver.h
+++ b/include/wine/obj_clientserver.h
@@ -5,8 +5,6 @@
 #ifndef __WINE_WINE_OBJ_CLIENTSERVER_H
 #define __WINE_WINE_OBJ_CLIENTSERVER_H
 
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_commdlgbrowser.h b/include/wine/obj_commdlgbrowser.h
index e585de1..ac3cec1 100644
--- a/include/wine/obj_commdlgbrowser.h
+++ b/include/wine/obj_commdlgbrowser.h
@@ -5,12 +5,6 @@
 #ifndef __WINE_WINE_OBJ_COMMDLGBROWSER_H
 #define __WINE_WINE_OBJ_COMMDLGBROWSER_H
 
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-#include "wine/obj_shellview.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_connection.h b/include/wine/obj_connection.h
index 0f8efcc..910aae6 100644
--- a/include/wine/obj_connection.h
+++ b/include/wine/obj_connection.h
@@ -7,9 +7,6 @@
 #ifndef __WINE_WINE_OBJ_CONNECTION_H
 #define __WINE_WINE_OBJ_CONNECTION_H
 
-#include "wine/obj_base.h"
-#include "winbase.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_contextmenu.h b/include/wine/obj_contextmenu.h
index 322067e..542ebb7 100644
--- a/include/wine/obj_contextmenu.h
+++ b/include/wine/obj_contextmenu.h
@@ -9,11 +9,6 @@
 #ifndef __WINE_WINE_OBJ_CONTEXTMENU_H
 #define __WINE_WINE_OBJ_CONTEXTMENU_H
 
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_control.h b/include/wine/obj_control.h
index 62e0540..d3c38cf 100644
--- a/include/wine/obj_control.h
+++ b/include/wine/obj_control.h
@@ -7,13 +7,6 @@
 #ifndef __WINE_WINE_OBJ_CONTROL_H
 #define __WINE_WINE_OBJ_CONTROL_H
 
-
-#include "winbase.h"
-#include "wine/obj_oleaut.h" /* for DISPID */
-#include "wine/obj_oleview.h"
-#include "wine/obj_inplace.h"
-#include "wine/obj_dragdrop.h"
-
 struct tagMSG;
 
 #ifdef __cplusplus
diff --git a/include/wine/obj_dataobject.h b/include/wine/obj_dataobject.h
index 67fc0b6..bfddfbd 100644
--- a/include/wine/obj_dataobject.h
+++ b/include/wine/obj_dataobject.h
@@ -6,10 +6,6 @@
 #ifndef __WINE_WINE_OBJ_DATAOBJECT_H
 #define __WINE_WINE_OBJ_DATAOBJECT_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_moniker.h"
-#include "wine/obj_storage.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_dockingwindowframe.h b/include/wine/obj_dockingwindowframe.h
index c1576be..da94b8d 100644
--- a/include/wine/obj_dockingwindowframe.h
+++ b/include/wine/obj_dockingwindowframe.h
@@ -5,12 +5,6 @@
 #ifndef __WINE_WINE_OBJ_DOCKINGWINDOWFRAME_H
 #define __WINE_WINE_OBJ_DOCKINGWINDOWFRAME_H
 
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-#include "wine/obj_inplace.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_dragdrop.h b/include/wine/obj_dragdrop.h
index b92915e..3410be5 100644
--- a/include/wine/obj_dragdrop.h
+++ b/include/wine/obj_dragdrop.h
@@ -5,11 +5,6 @@
 #ifndef __WINE_WINE_OBJ_DRAGDROP_H
 #define __WINE_WINE_OBJ_DRAGDROP_H
 
-#include "winnt.h"
-#include "windef.h"
-#include "wine/obj_base.h"
-#include "wine/obj_dataobject.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_enumidlist.h b/include/wine/obj_enumidlist.h
index ac96bdb..d27da2c 100644
--- a/include/wine/obj_enumidlist.h
+++ b/include/wine/obj_enumidlist.h
@@ -7,10 +7,6 @@
 #ifndef __WINE_WINE_OBJ_ENUMIDLIST_H
 #define __WINE_WINE_OBJ_ENUMIDLIST_H
 
-#include "wine/obj_base.h"
-#include "shell.h"
-#include "winbase.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_errorinfo.h b/include/wine/obj_errorinfo.h
index b615281..2e3e816 100644
--- a/include/wine/obj_errorinfo.h
+++ b/include/wine/obj_errorinfo.h
@@ -5,9 +5,6 @@
 #ifndef __WINE_WINE_OBJ_ERRORINFO_H
 #define __WINE_WINE_OBJ_ERRORINFO_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_oleaut.h"
-
 DEFINE_GUID(IID_IErrorInfo,0x1CF2B120,0x547D,0x101B,0x8E,0x65,0x08,0x00,0x2B,0x2B,0xD1,0x19);
 typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
 
diff --git a/include/wine/obj_extracticon.h b/include/wine/obj_extracticon.h
index 0a2145f..f8e96a9 100644
--- a/include/wine/obj_extracticon.h
+++ b/include/wine/obj_extracticon.h
@@ -5,12 +5,6 @@
 #ifndef __WINE_WINE_OBJ_EXTRACTICON_H
 #define __WINE_WINE_OBJ_EXTRACTICON_H
 
-#include "winbase.h"
-#include "windef.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_inplace.h b/include/wine/obj_inplace.h
index f667026..146e24d 100644
--- a/include/wine/obj_inplace.h
+++ b/include/wine/obj_inplace.h
@@ -7,9 +7,7 @@
 #ifndef __WINE_WINE_OBJ_INPLACE_H
 #define __WINE_WINE_OBJ_INPLACE_H
 
-
 struct tagMSG;
-#include "wine/obj_moniker.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/include/wine/obj_marshal.h b/include/wine/obj_marshal.h
index e77ce38..e365618 100644
--- a/include/wine/obj_marshal.h
+++ b/include/wine/obj_marshal.h
@@ -6,9 +6,6 @@
 #ifndef __WINE_WINE_OBJ_MARSHAL_H
 #define __WINE_WINE_OBJ_MARSHAL_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_storage.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_misc.h b/include/wine/obj_misc.h
index 9dae7ba..8e04e0a 100644
--- a/include/wine/obj_misc.h
+++ b/include/wine/obj_misc.h
@@ -8,8 +8,6 @@
 #ifndef __WINE_WINE_OBJ_MISC_H
 #define __WINE_WINE_OBJ_MISC_H
 
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_moniker.h b/include/wine/obj_moniker.h
index 114217e..83d5b1b 100644
--- a/include/wine/obj_moniker.h
+++ b/include/wine/obj_moniker.h
@@ -4,10 +4,6 @@
 #ifndef __WINE_WINE_OBJ_MONIKER_H
 #define __WINE_WINE_OBJ_MONIKER_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_storage.h"
-#include "wine/obj_misc.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_oleaut.h b/include/wine/obj_oleaut.h
index e38c677..0d33dc8 100644
--- a/include/wine/obj_oleaut.h
+++ b/include/wine/obj_oleaut.h
@@ -5,8 +5,6 @@
 #ifndef __WINE_WINE_OBJ_OLEAUT_H
 #define __WINE_WINE_OBJ_OLEAUT_H
 
-#include "wine/obj_base.h"
-
 /*****************************************************************************
  * Predeclare the interfaces
  */
diff --git a/include/wine/obj_olefont.h b/include/wine/obj_olefont.h
index e39759c..c0edcf4 100644
--- a/include/wine/obj_olefont.h
+++ b/include/wine/obj_olefont.h
@@ -7,10 +7,6 @@
 #ifndef __WINE_WINE_OBJ_OLEFONT_H
 #define __WINE_WINE_OBJ_OLEFONT_H
 
-#include "wine/obj_oleaut.h"
-#include "wine/obj_base.h"
-#include "wingdi.h"	/* TEXTMETRIC*/
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_oleobj.h b/include/wine/obj_oleobj.h
index dcda1ba..6fb6a2f 100644
--- a/include/wine/obj_oleobj.h
+++ b/include/wine/obj_oleobj.h
@@ -7,11 +7,6 @@
 #ifndef __WINE_WINE_OBJ_OLEOBJ_H
 #define __WINE_WINE_OBJ_OLEOBJ_H
 
-
-#include "wine/obj_moniker.h"
-#include "wine/obj_inplace.h"
-#include "wine/obj_dataobject.h"
-
 struct tagMSG;
 struct tagLOGPALETTE;
 
diff --git a/include/wine/obj_oleundo.h b/include/wine/obj_oleundo.h
index 5f676c6..b52fbe2 100644
--- a/include/wine/obj_oleundo.h
+++ b/include/wine/obj_oleundo.h
@@ -7,13 +7,6 @@
 #ifndef __WINE_WINE_OBJ_OLEUNDO_H
 #define __WINE_WINE_OBJ_OLEUNDO_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_dataobject.h"
-#include "wine/obj_inplace.h"
-#include "wine/obj_olefont.h"
-#include "wine/obj_property.h"
-#include "winbase.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_oleview.h b/include/wine/obj_oleview.h
index d3a24fd..b7ff2fe 100644
--- a/include/wine/obj_oleview.h
+++ b/include/wine/obj_oleview.h
@@ -6,10 +6,6 @@
 #ifndef __WINE_WINE_OBJ_OLEVIEW_H
 #define __WINE_WINE_OBJ_OLEVIEW_H
 
-
-#include "wine/obj_base.h"
-#include "wine/obj_dataobject.h"
-
 struct tagLOGPALETTE;
 
 #ifdef __cplusplus
diff --git a/include/wine/obj_picture.h b/include/wine/obj_picture.h
index c39d949..2e2d55c 100644
--- a/include/wine/obj_picture.h
+++ b/include/wine/obj_picture.h
@@ -7,11 +7,6 @@
 #ifndef __WINE_WINE_OBJ_PICTURE_H
 #define __WINE_WINE_OBJ_PICTURE_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_oleaut.h"
-#include "windows.h"
-#include "windef.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_property.h b/include/wine/obj_property.h
index 2aed400..8ab92ab 100644
--- a/include/wine/obj_property.h
+++ b/include/wine/obj_property.h
@@ -7,12 +7,6 @@
 #ifndef __WINE_WINE_OBJ_PROPERTY_H
 #define __WINE_WINE_OBJ_PROPERTY_H
 
-#include "wine/obj_oleaut.h" /* for DISPID */
-#include "wine/obj_storage.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_propertystorage.h b/include/wine/obj_propertystorage.h
index 9b4c3fe..5236ff9 100644
--- a/include/wine/obj_propertystorage.h
+++ b/include/wine/obj_propertystorage.h
@@ -5,9 +5,6 @@
 #ifndef __WINE_WINE_OBJ_PROPERTYSTORAGE_H
 #define __WINE_WINE_OBJ_PROPERTYSTORAGE_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_storage.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_queryassociations.h b/include/wine/obj_queryassociations.h
index 72302cf..257d9f2 100644
--- a/include/wine/obj_queryassociations.h
+++ b/include/wine/obj_queryassociations.h
@@ -5,9 +5,6 @@
 #ifndef __WINE_WINE_OBJ_QUERYASSOCIATIONS_H
 #define __WINE_WINE_OBJ_QUERYASSOCIATIONS_H
 
-#include "winbase.h"
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_shellbrowser.h b/include/wine/obj_shellbrowser.h
index cf85b91..3387e1b 100644
--- a/include/wine/obj_shellbrowser.h
+++ b/include/wine/obj_shellbrowser.h
@@ -5,15 +5,6 @@
 #ifndef __WINE_WINE_OBJ_SHELLBROWSER_H
 #define __WINE_WINE_OBJ_SHELLBROWSER_H
 
-#include "winbase.h"
-#include "windef.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-#include "wine/obj_inplace.h"	/* IOleWindow */
-#include "wine/obj_shellview.h"	/* IShellView */
-#include "commctrl.h" 		/* TBBUTTON */
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_shellextinit.h b/include/wine/obj_shellextinit.h
index 3febd83..3bac3a1 100644
--- a/include/wine/obj_shellextinit.h
+++ b/include/wine/obj_shellextinit.h
@@ -5,13 +5,6 @@
 #ifndef __WINE_WINE_OBJ_SHELLEXTINIT_H
 #define __WINE_WINE_OBJ_SHELLEXTINIT_H
 
-#include "shell.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-#include "wine/obj_dataobject.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_shellfolder.h b/include/wine/obj_shellfolder.h
index 325434c..0a25403 100644
--- a/include/wine/obj_shellfolder.h
+++ b/include/wine/obj_shellfolder.h
@@ -7,13 +7,6 @@
 #ifndef __WINE_WINE_OBJ_SHELLFOLDER_H
 #define __WINE_WINE_OBJ_SHELLFOLDER_H
 
-#include "wine/obj_base.h"
-#include "wine/obj_moniker.h"		/* for LPBC */
-#include "wine/obj_enumidlist.h"
-#include "wine/obj_oleaut.h"
-#include "winbase.h"
-#include "shell.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_shelllink.h b/include/wine/obj_shelllink.h
index 00c9716..79bf29f 100644
--- a/include/wine/obj_shelllink.h
+++ b/include/wine/obj_shelllink.h
@@ -7,10 +7,6 @@
 #ifndef __WINE_WINE_OBJ_SHELLLINK_H
 #define __WINE_WINE_OBJ_SHELLLINK_H
 
-#include "wine/obj_base.h"
-#include "winbase.h"
-#include "shell.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_shellview.h b/include/wine/obj_shellview.h
index de90ba3..5786bcc 100644
--- a/include/wine/obj_shellview.h
+++ b/include/wine/obj_shellview.h
@@ -5,15 +5,6 @@
 #ifndef __WINE_WINE_OBJ_SHELLVIEW_H
 #define __WINE_WINE_OBJ_SHELLVIEW_H
 
-#include "winbase.h"
-#include "windef.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "wine/obj_base.h"
-#include "wine/obj_inplace.h"
-#include "wine/obj_shellfolder.h"
-#include "prsht.h"	/* LPFNADDPROPSHEETPAGE */
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/obj_storage.h b/include/wine/obj_storage.h
index 0ea49d9..96b7e18 100644
--- a/include/wine/obj_storage.h
+++ b/include/wine/obj_storage.h
@@ -5,10 +5,6 @@
 #ifndef __WINE_WINE_OBJ_STORAGE_H
 #define __WINE_WINE_OBJ_STORAGE_H
 
-
-#include "winnt.h"
-#include "wine/obj_base.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* defined(__cplusplus) */
diff --git a/include/wine/undocshell.h b/include/wine/undocshell.h
index 5c07b4d..ca9a8f2 100644
--- a/include/wine/undocshell.h
+++ b/include/wine/undocshell.h
@@ -3,9 +3,7 @@
 
 #include "windef.h"
 #include "commctrl.h"
-#include "wine/obj_shellfolder.h"
-#include "wine/obj_shellview.h"
-#include "wine/obj_dragdrop.h"
+#include "shlobj.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -98,19 +96,19 @@
 	LPVOID dest,
 	DWORD len,
 	LPSTRRET src,
-	LPITEMIDLIST pidl);
+	const ITEMIDLIST *pidl);
 
 HRESULT WINAPI StrRetToStrNW (
 	LPVOID dest,
 	DWORD len,
 	LPSTRRET src,
-	LPITEMIDLIST pidl);
+	const ITEMIDLIST *pidl);
 
 HRESULT WINAPI StrRetToStrNAW (
 	LPVOID dest,
 	DWORD len,
 	LPSTRRET src,
-	LPITEMIDLIST pidl);
+	const ITEMIDLIST *pidl);
 
 
 /****************************************************************************
diff --git a/loader/main.c b/loader/main.c
index 4e60ebb..ea396b9 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -14,7 +14,6 @@
 #include "drive.h"
 #include "file.h"
 #include "options.h"
-#include "shell.h"
 #include "debugtools.h"
 #include "server.h"
 #include "loadorder.h"
diff --git a/programs/notepad/dialog.c b/programs/notepad/dialog.c
index a7827b4..9dd5a02 100644
--- a/programs/notepad/dialog.c
+++ b/programs/notepad/dialog.c
@@ -12,7 +12,6 @@
 #include <winerror.h>
 
 #ifdef WINELIB
-#include "shell.h"
 #include "options.h"
 #endif
 
diff --git a/programs/regapi/regapi.c b/programs/regapi/regapi.c
index 237c532..9c8e910 100644
--- a/programs/regapi/regapi.c
+++ b/programs/regapi/regapi.c
@@ -14,7 +14,6 @@
 #include <winerror.h>
 #include <winnt.h>
 #include <string.h>
-#include <shell.h>
 
 /******************************************************************************
  * Defines and consts
diff --git a/programs/winhelp/macro.c b/programs/winhelp/macro.c
index 2f2d11d..e3c293a 100644
--- a/programs/winhelp/macro.c
+++ b/programs/winhelp/macro.c
@@ -7,9 +7,6 @@
 #include <stdio.h>
 #include "windows.h"
 #include "commdlg.h"
-#ifdef WINELIB
-#include "shell.h"
-#endif
 #include "winhelp.h"
 #include "macro.h"