Optimized away more includes, readded some #includes for necessary
prototypes.

diff --git a/dlls/shell32/contmenu.c b/dlls/shell32/contmenu.c
index 9712c06..ed3b7bc 100644
--- a/dlls/shell32/contmenu.c
+++ b/dlls/shell32/contmenu.c
@@ -9,7 +9,7 @@
 #include "debug.h"
 
 #include "pidl.h"
-#include "objbase.h"
+#include "wine/obj_base.h"
 #include "if_macros.h"
 #include "shlguid.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/enumidlist.c b/dlls/shell32/enumidlist.c
index 24927fe..64b58ca 100644
--- a/dlls/shell32/enumidlist.c
+++ b/dlls/shell32/enumidlist.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "debug.h"
-#include "objbase.h"
+#include "wine/obj_base.h"
 #include "winerror.h"
 
 #include "pidl.h"
diff --git a/dlls/shell32/folders.c b/dlls/shell32/folders.c
index f556c96..efab1d3 100644
--- a/dlls/shell32/folders.c
+++ b/dlls/shell32/folders.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "debug.h"
-#include "objbase.h"
+#include "wine/obj_base.h"
 #include "winerror.h"
 #include "pidl.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index b77cc66..961dddf 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -9,7 +9,6 @@
 #include "debug.h"
 #include "winerror.h"
 
-#include "objbase.h"
 #include "wine/obj_base.h"
 #include "wine/obj_storage.h"
 
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index 8a77bfa..345f06c 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -10,7 +10,7 @@
 #include <string.h>
 #include "winreg.h"
 #include "winerror.h"
-#include "objbase.h"
+#include "wine/obj_base.h"
 #include "winversion.h"
 
 #include "shlguid.h"
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 97c5b50..bd9dc6e 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -17,7 +17,7 @@
 #include "shlguid.h"
 #include "shlobj.h"
 #include "servprov.h"
-#include "objbase.h"
+#include "wine/obj_base.h"
 #include "if_macros.h"
 #include "shell32_main.h"
 #include "shresdef.h"
diff --git a/graphics/d3ddevices.c b/graphics/d3ddevices.c
index c73700e..f3f5e43 100644
--- a/graphics/d3ddevices.c
+++ b/graphics/d3ddevices.c
@@ -12,7 +12,6 @@
 #include "ddraw.h"
 #include "d3d.h"
 #include "debug.h"
-#include "objbase.h"
 
 #include "d3d_private.h"
 
diff --git a/graphics/d3dexecutebuffer.c b/graphics/d3dexecutebuffer.c
index 9a02ed9..787f7d6 100644
--- a/graphics/d3dexecutebuffer.c
+++ b/graphics/d3dexecutebuffer.c
@@ -12,7 +12,6 @@
 #include "ddraw.h"
 #include "d3d.h"
 #include "debug.h"
-#include "objbase.h"
 
 #include "d3d_private.h"
 
diff --git a/graphics/d3dlight.c b/graphics/d3dlight.c
index ddf64ae..e3099b8 100644
--- a/graphics/d3dlight.c
+++ b/graphics/d3dlight.c
@@ -12,7 +12,6 @@
 #include "ddraw.h"
 #include "d3d.h"
 #include "debug.h"
-#include "objbase.h"
 
 #include "d3d_private.h"
 
diff --git a/graphics/d3dmaterial.c b/graphics/d3dmaterial.c
index 0bb4f6e..b757fba 100644
--- a/graphics/d3dmaterial.c
+++ b/graphics/d3dmaterial.c
@@ -11,7 +11,6 @@
 #include "ddraw.h"
 #include "d3d.h"
 #include "debug.h"
-#include "objbase.h"
 
 #include "d3d_private.h"
 
diff --git a/graphics/d3dtexture.c b/graphics/d3dtexture.c
index 6a41917..533bff5 100644
--- a/graphics/d3dtexture.c
+++ b/graphics/d3dtexture.c
@@ -12,7 +12,6 @@
 #include "ddraw.h"
 #include "d3d.h"
 #include "debug.h"
-#include "objbase.h"
 
 #include "d3d_private.h"
 
diff --git a/graphics/d3dviewport.c b/graphics/d3dviewport.c
index 07a8c56..49c34ec 100644
--- a/graphics/d3dviewport.c
+++ b/graphics/d3dviewport.c
@@ -11,7 +11,6 @@
 #include "ddraw.h"
 #include "d3d.h"
 #include "debug.h"
-#include "objbase.h"
 
 #include "d3d_private.h"
 
diff --git a/graphics/ddraw.c b/graphics/ddraw.c
index 3f21ef4..1fb8878 100644
--- a/graphics/ddraw.c
+++ b/graphics/ddraw.c
@@ -50,7 +50,6 @@
 #include "winerror.h"
 #include "gdi.h"
 #include "heap.h"
-#include "ldt.h"
 #include "dc.h"
 #include "win.h"
 #include "miscemu.h"
@@ -60,7 +59,6 @@
 #include "spy.h"
 #include "message.h"
 #include "options.h"
-#include "objbase.h"
 #include "monitor.h"
 
 /* This for all the enumeration and creation of D3D-related objects */
diff --git a/loader/main.c b/loader/main.c
index ddf03f1..173bd47 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -14,7 +14,6 @@
 #include "bitmap.h"
 #include "comm.h"
 #include "neexe.h"
-#include "win.h"
 #include "main.h"
 #include "menu.h"
 #include "message.h"
diff --git a/memory/atom.c b/memory/atom.c
index 28d4f4f..6c03de1 100644
--- a/memory/atom.c
+++ b/memory/atom.c
@@ -17,6 +17,8 @@
 #include <ctype.h>
 
 #include "winuser.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
 #include "instance.h"
 #include "ldt.h"
 #include "stackframe.h"
diff --git a/misc/lstr.c b/misc/lstr.c
index 69e4036..3d8980c 100644
--- a/misc/lstr.c
+++ b/misc/lstr.c
@@ -26,6 +26,7 @@
 #include "winnls.h"
 #include "wine/winbase16.h"
 #include "winuser.h"
+#include "wine/winuser16.h"
 #include "task.h"
 #include "heap.h"
 #include "ldt.h"
diff --git a/msdos/dosconf.c b/msdos/dosconf.c
index dd447ac..97ddb56 100644
--- a/msdos/dosconf.c
+++ b/msdos/dosconf.c
@@ -10,7 +10,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <ctype.h>
-#include "windows.h"
+#include "winbase.h"
 #include "msdos.h"
 #include "debug.h"
 #include "options.h"
diff --git a/msdos/dosmem.c b/msdos/dosmem.c
index e0a63a9..fea99ee 100644
--- a/msdos/dosmem.c
+++ b/msdos/dosmem.c
@@ -8,8 +8,8 @@
 #include <signal.h>
 #include <stdlib.h>
 #include <string.h>
-#include "windows.h"
 #include "winbase.h"
+#include "wine/winbase16.h"
 #include "global.h"
 #include "ldt.h"
 #include "miscemu.h"
diff --git a/msdos/dpmi.c b/msdos/dpmi.c
index 7ec8e2e..2ace8b7 100644
--- a/msdos/dpmi.c
+++ b/msdos/dpmi.c
@@ -6,23 +6,19 @@
 
 #include <unistd.h>
 #include <string.h>
-#include "windows.h"
-#include "heap.h"
-#include "global.h"
+#include "wintypes.h"
+#include "wine/winbase16.h"
 #include "ldt.h"
+#include "global.h"
 #include "module.h"
 #include "miscemu.h"
-#include "drive.h"
 #include "msdos.h"
 #include "task.h"
-#include "dosexe.h"
 #include "toolhelp.h"
-#include "debug.h"
 #include "selectors.h"
-#include "thread.h"
 #include "process.h"
-#include "stackframe.h"
 #include "callback.h"
+#include "debug.h"
 
 #define DOS_GET_DRIVE(reg) ((reg) ? (reg) - 1 : DRIVE_GetCurrentDrive())
 
diff --git a/msdos/int16.c b/msdos/int16.c
index 02ea9e8..aba0de1 100644
--- a/msdos/int16.c
+++ b/msdos/int16.c
@@ -7,14 +7,10 @@
 #include <unistd.h>
 
 #include "config.h"
-#include "debug.h"
-
-#include "ldt.h"
-#include "drive.h"
-#include "msdos.h"
-#include "miscemu.h"
 #include "module.h"
 #include "console.h"
+#include "wincon.h"
+#include "debug.h"
 
 /**********************************************************************
  *	    INT_Int16Handler
diff --git a/msdos/int21.c b/msdos/int21.c
index df36e8c..84219c9 100644
--- a/msdos/int21.c
+++ b/msdos/int21.c
@@ -16,7 +16,10 @@
 #include <unistd.h>
 #include <utime.h>
 #include <ctype.h>
-#include "windows.h"
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h" /* SW_NORMAL */
+#include "wine/winbase16.h"
 #include "winerror.h"
 #include "drive.h"
 #include "file.h"
diff --git a/msdos/int2a.c b/msdos/int2a.c
index 1924a35..8f3d6ad 100644
--- a/msdos/int2a.c
+++ b/msdos/int2a.c
@@ -5,7 +5,6 @@
 #include <stdlib.h>
 #include "msdos.h"
 #include "miscemu.h"
-/* #define DEBUG_INT */
 #include "debug.h"
 
 /**********************************************************************
diff --git a/msdos/interrupts.c b/msdos/interrupts.c
index e1bf56b..740e009 100644
--- a/msdos/interrupts.c
+++ b/msdos/interrupts.c
@@ -5,13 +5,9 @@
  */
 
 #include <sys/types.h>
-
-#include "windows.h"
-#include "drive.h"
+#include "wintypes.h"
 #include "miscemu.h"
 #include "msdos.h"
-#include "module.h"
-#include "stackframe.h"
 #include "debug.h"
 
 static FARPROC16 INT_Vectors[256];
diff --git a/msdos/ioports.c b/msdos/ioports.c
index 88e14e0..f9f4801 100644
--- a/msdos/ioports.c
+++ b/msdos/ioports.c
@@ -16,7 +16,7 @@
 #include <string.h>
 #include <time.h>
 #include <unistd.h>
-#include "windows.h"
+#include "wintypes.h"
 #include "vga.h"
 #include "dosexe.h"
 #include "options.h"
diff --git a/msdos/vxd.c b/msdos/vxd.c
index 10c569b..db81220 100644
--- a/msdos/vxd.c
+++ b/msdos/vxd.c
@@ -6,12 +6,13 @@
 
 #include <fcntl.h>
 #include <memory.h>
-#include "windows.h"
 #include "winbase.h"
+#include "winuser.h"
+#include "wine/winbase16.h"
+#include "wine/winuser16.h"
 #include "msdos.h"
 #include "miscemu.h"
 #include "selectors.h"
-#include "module.h"
 #include "neexe.h"
 #include "task.h"
 #include "process.h"
diff --git a/msdos/xms.c b/msdos/xms.c
index c5d462f..8e7cbde 100644
--- a/msdos/xms.c
+++ b/msdos/xms.c
@@ -8,7 +8,7 @@
 
 #include <unistd.h>
 #include <string.h>
-#include "windows.h"
+#include "winbase.h"
 #include "global.h"
 #include "module.h"
 #include "miscemu.h"
diff --git a/ole/storage.c b/ole/storage.c
index ce177ed..7c306e5 100644
--- a/ole/storage.c
+++ b/ole/storage.c
@@ -10,8 +10,10 @@
 #include <assert.h>
 #include <time.h>
 #include <string.h>
-#include "windows.h"
+#include "windef.h"
 #include "winerror.h"
+#include "wine/winestring.h"
+#include "wine/winbase16.h"
 #include "file.h"
 #include "ole.h"
 #include "wine/obj_base.h"
diff --git a/ole/typelib.c b/ole/typelib.c
index d0f18e1..674215a 100644
--- a/ole/typelib.c
+++ b/ole/typelib.c
@@ -8,8 +8,8 @@
 #include <string.h>
 #include <assert.h>
 #include "wintypes.h"
+#include "wine/winbase16.h"
 #include "heap.h"
-#include "windows.h"
 #include "winreg.h"
 #include "winerror.h"
 #include "oleauto.h"
diff --git a/programs/avitools/icinfo.c b/programs/avitools/icinfo.c
index e3c1291..a536f67 100644
--- a/programs/avitools/icinfo.c
+++ b/programs/avitools/icinfo.c
@@ -2,6 +2,7 @@
 #include <strings.h>
 #include "wintypes.h"
 #include "windows.h"
+#include "driver.h"
 #include "mmsystem.h"
 #include "vfw.h"
 
diff --git a/relay32/relay386.c b/relay32/relay386.c
index a2c8ef4..5f740a6 100644
--- a/relay32/relay386.c
+++ b/relay32/relay386.c
@@ -8,7 +8,6 @@
 #include <assert.h>
 #include <string.h>
 #include "winnt.h"
-#include "windows.h"
 #include "builtin32.h"
 #include "selectors.h"
 #include "debugstr.h"
@@ -136,6 +135,9 @@
         case 15: ret = cfunc(args[0],args[1],args[2],args[3],args[4],args[5],
                              args[6],args[7],args[8],args[9],args[10],args[11],
                              args[12],args[13],args[14]); break;
+        case 16: ret = cfunc(args[0],args[1],args[2],args[3],args[4],args[5],
+                             args[6],args[7],args[8],args[9],args[10],args[11],
+                             args[12],args[13],args[14],args[15]); break;
         default:
             ERR(relay, "Unsupported nb args %d\n",
                      nb_args );
@@ -176,6 +178,9 @@
         case 15: ret = func(args[0],args[1],args[2],args[3],args[4],args[5],
                             args[6],args[7],args[8],args[9],args[10],args[11],
                             args[12],args[13],args[14]); break;
+        case 16: ret = func(args[0],args[1],args[2],args[3],args[4],args[5],
+                            args[6],args[7],args[8],args[9],args[10],args[11],
+                            args[12],args[13],args[14],args[15]); break;
         default:
             ERR(relay, "Unsupported nb args %d\n",nb_args );
             assert(FALSE);
diff --git a/tools/build.c b/tools/build.c
index 8bf5ada..94903c0 100644
--- a/tools/build.c
+++ b/tools/build.c
@@ -12,7 +12,7 @@
 #include <ctype.h>
 #include <unistd.h>
 
-#include "windows.h"
+#include "winbase.h"
 #include "winnt.h"
 #include "module.h"
 #include "neexe.h"
diff --git a/windows/clipboard.c b/windows/clipboard.c
index bcc4f15..d6753b5 100644
--- a/windows/clipboard.c
+++ b/windows/clipboard.c
@@ -13,6 +13,7 @@
 #include <unistd.h>
 #include <string.h>
 #include "winuser.h"
+#include "wine/winuser16.h"
 #include "heap.h"
 #include "task.h"
 #include "message.h"
diff --git a/windows/input.c b/windows/input.c
index 0828204..f1660f5 100644
--- a/windows/input.c
+++ b/windows/input.c
@@ -17,6 +17,7 @@
 #include "winuser.h"
 #include "wine/winbase16.h"
 #include "wine/winuser16.h"
+#include "wine/keyboard16.h"
 #include "win.h"
 #include "gdi.h"
 #include "heap.h"