diff --git a/include/callback.h b/include/callback.h
index d1cb792..c2d1020 100644
--- a/include/callback.h
+++ b/include/callback.h
@@ -48,6 +48,8 @@
 
 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
     CallTo16_long_lwwll( func, dwId, msg, hdrvr, lparam1, lparam2 )
+#define CallDriverCallback( func, hdev, msg, user, lparam1, lparam2 ) \
+    CallTo16_word_wwlll( func, hdev, msg, user, lparam1, lparam2 )
 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
     CallTo16_word_wwlll( func, id, msg, dwUser, dw1, dw2 )
 #define CallWindowsExitProc( func, nExitType ) \
@@ -78,6 +80,8 @@
 
 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
     (*func)( dwId, msg, hdrvr, lparam1, lparam2 )
+#define CallDriverCallback( func, hdev, msg, user, lparam1, lparam2 ) \
+    (*func)( hdev, msg, user, lparam1, lparam2 )
 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
     (*func)( id, msg, dwUser, dw1, dw2 )
 #define CallWindowsExitProc( func, nExitType ) \
diff --git a/include/compobj.h b/include/compobj.h
new file mode 100644
index 0000000..baa348f
--- /dev/null
+++ b/include/compobj.h
@@ -0,0 +1,16 @@
+#if !defined(COMPOBJ_H)
+#define COMPOBJ_H
+
+struct tagCLSID {
+  DWORD	Data1;
+  WORD	Data2;
+  WORD  Data3;
+  BYTE	Data4[8];
+};
+
+typedef struct tagCLSID CLSID;
+
+OLESTATUS StringFromCLSID(const CLSID *id, LPSTR);
+OLESTATUS CLSIDFromString(const LPCSTR, CLSID *);
+
+#endif
diff --git a/include/miscemu.h b/include/miscemu.h
index dba7cff..4b5847b 100644
--- a/include/miscemu.h
+++ b/include/miscemu.h
@@ -10,7 +10,7 @@
 #include <stdio.h>
 #include "winnt.h"
 
-  /* miscemu/dosmem.c */
+  /* msdos/dosmem.c */
 extern HANDLE16 DOSMEM_BiosSeg;
 extern DWORD DOSMEM_CollateTable;
 
@@ -24,9 +24,6 @@
 extern LPVOID DOSMEM_MapDosToLinear(UINT32); /* linear DOS to Wine */
 extern UINT32 DOSMEM_MapLinearToDos(LPVOID); /* linear Wine to DOS */
 
-/* miscemu/interrupts.c */
-extern BOOL32 INT_Init(void);
-
 /* msdos/interrupts.c */
 extern FARPROC16 INT_GetHandler( BYTE intnum );
 extern void INT_SetHandler( BYTE intnum, FARPROC16 handler );
@@ -39,6 +36,14 @@
 /* msdos/int1a.c */
 extern DWORD INT1A_GetTicksSinceMidnight(void);
 
+/* loader/signal.c */
+extern BOOL32 SIGNAL_Init(void);
+extern void SIGNAL_SetHandler( int sig, void (*func)(), int flags );
+extern void SIGNAL_MaskAsyncEvents( BOOL32 flag );
+
+/* if1632/signal.c */
+extern BOOL32 SIGNAL_InitEmulator(void);
+
 #define INT_BARF(context,num) \
     fprintf( stderr, "int%x: unknown/not implemented parameters:\n" \
                      "int%x: AX %04x, BX %04x, CX %04x, DX %04x, " \
diff --git a/include/module.h b/include/module.h
index 872b498..563a2d8 100644
--- a/include/module.h
+++ b/include/module.h
@@ -126,6 +126,7 @@
 extern BOOL16 MODULE_SetEntryPoint( HMODULE16 hModule, WORD ordinal,
                                     WORD offset );
 extern FARPROC16 MODULE_GetWndProcEntry16( const char *name );
+extern FARPROC16 WIN32_GetProcAddress16( HMODULE16 hmodule, LPSTR name );
 
 /* builtin.c */
 extern BOOL16 BUILTIN_Init(void);
diff --git a/include/tweak.h b/include/tweak.h
index d2dcbf6..02ac88a 100644
--- a/include/tweak.h
+++ b/include/tweak.h
@@ -15,7 +15,9 @@
 int  TWEAK_CheckConfiguration();
 INT32  TWEAK_PartyMessageBox(LPCSTR, LPCSTR, DWORD);
 void  TWEAK_DrawReliefRect95(HDC32, RECT32 const *);
-void  TWEAK_DrawMenuSeparator95(HDC32, UINT32, UINT32, UINT32);
+void  TWEAK_DrawRevReliefRect95(HDC32, RECT32 const *);
+void  TWEAK_DrawMenuSeparatorHoriz95(HDC32, UINT32, UINT32, UINT32);
+void  TWEAK_DrawMenuSeparatorVert95(HDC32, UINT32, UINT32, UINT32);
 extern int  TWEAK_Win95Look;
 extern int  TWEAK_WineInitialized;
 extern HPEN32  TWEAK_PenFF95;
diff --git a/include/win16drv.h b/include/win16drv.h
index f7d144c..88acb12 100644
--- a/include/win16drv.h
+++ b/include/win16drv.h
@@ -188,6 +188,8 @@
                                   const RECT32 *lprect, LPCSTR str, UINT32 count,
                                   const INT32 *lpDx );
 extern HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle );
+extern BOOL32 WIN16DRV_PatBlt( struct tagDC *dc, INT32 left, INT32 top,
+                               INT32 width, INT32 height, DWORD rop );
 
 
 
diff --git a/include/windows.h b/include/windows.h
index 28dd31d..06814ac 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -2844,6 +2844,67 @@
 #define MF_HELP            0x4000
 #define MF_MOUSESELECT     0x8000
 
+/* Flags for extended menu item types.  */
+#define MFT_STRING         MF_STRING
+#define MFT_BITMAP         MF_BITMAP
+#define MFT_MENUBARBREAK   MF_MENUBARBREAK
+#define MFT_MENUBREAK      MF_MENUBREAK
+#define MFT_OWNERDRAW      MF_OWNERDRAW
+#define MFT_RADIOCHECK     0x00000200L
+#define MFT_SEPARATOR      MF_SEPARATOR
+#define MFT_RIGHTORDER     0x00002000L
+#define MFT_RIGHTJUSTIFY   MF_RIGHTJUSTIFY
+
+/* Flags for extended menu item states.  */
+#define MFS_GRAYED          0x00000003L
+#define MFS_DISABLED        MFS_GRAYED
+#define MFS_CHECKED         MF_CHECKED
+#define MFS_HILITE          MF_HILITE
+#define MFS_ENABLED         MF_ENABLED
+#define MFS_UNCHECKED       MF_UNCHECKED
+#define MFS_UNHILITE        MF_UNHILITE
+#define MFS_DEFAULT         MF_DEFAULT
+
+typedef struct {
+  UINT32    cbSize;
+  UINT32    fMask;
+  UINT32    fType;
+  UINT32    fState;
+  UINT32    wID;
+  HMENU32   hSubMenu;
+  HBITMAP32 hbmpChecked;
+  HBITMAP32 hbmpUnchecked;
+  DWORD     dwItemData;
+  LPSTR     dwTypeData;
+  UINT32    cch;
+} MENUITEMINFO32A, *LPMENUITEMINFO32A;
+
+typedef struct {
+  UINT32    cbSize;
+  UINT32    fMask;
+  UINT32    fType;
+  UINT32    fState;
+  UINT32    wID;
+  HMENU32   hSubMenu;
+  HBITMAP32 hbmpChecked;
+  HBITMAP32 hbmpUnchecked;
+  DWORD     dwItemData;
+  LPWSTR    dwTypeData;
+  UINT32    cch;
+} MENUITEMINFO32W, *LPMENUITEMINFO32W;
+
+DECL_WINELIB_TYPE_AW(MENUITEMINFO);
+DECL_WINELIB_TYPE_AW(LPMENUITEMINFO);
+
+/* Field specifiers for MENUITEMINFO[AW] type.  */
+#define MIIM_STATE       0x00000001
+#define MIIM_ID          0x00000002
+#define MIIM_SUBMENU     0x00000004
+#define MIIM_CHECKMARKS  0x00000008
+#define MIIM_TYPE        0x00000010
+#define MIIM_DATA        0x00000020
+
+
 #ifndef NOWINOFFSETS
 #define GCW_HBRBACKGROUND (-10)
 #endif
@@ -5070,13 +5131,17 @@
 WORD       ChangeSelector(WORD,WORD);
 INT16      CloseComm(INT16);
 HGLOBAL16  CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*,LPCVOID,LPCVOID);
+WORD       CreateSystemTimer(WORD,FARPROC16);
 BOOL16     DCHook(HDC16,WORD,DWORD,LPARAM);
 VOID       DirectedYield(HTASK16);
 HGLOBAL16  DirectResAlloc(HINSTANCE16,WORD,UINT16);
+VOID       DisableSystemTimers(void);
 BOOL16     DlgDirSelect(HWND16,LPSTR,INT16);
 BOOL16     DlgDirSelectComboBox(HWND16,LPSTR,INT16);
 DWORD      DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
+BOOL16     EnableCommNotification(INT16,HWND16,INT16,INT16);
 BOOL16     EnableHardwareInput(BOOL16);
+VOID       EnableSystemTimers(void);
 INT16      ExcludeVisRect(HDC16,INT16,INT16,INT16,INT16);
 HANDLE16   FarGetOwner(HGLOBAL16);
 VOID       FarSetOwner(HGLOBAL16,HANDLE16);
@@ -5283,6 +5348,9 @@
 #define    GetFullPathName WINELIB_NAME_AW(GetFullPathName)
 VOID       GetLocalTime(LPSYSTEMTIME);
 DWORD      GetLogicalDrives(void);
+BOOL32     GetMenuItemInfo32A(HMENU32,UINT32,BOOL32,MENUITEMINFO32A*);
+BOOL32     GetMenuItemInfo32W(HMENU32,UINT32,BOOL32,MENUITEMINFO32W*);
+#define    GetMenuItemInfo WINELIB_NAME_AW(GetMenuItemInfo)
 UINT32     GetOEMCP(void);
 DWORD      GetPriorityClass(HANDLE32);
 HANDLE32   GetProcessHeap(void);
