diff --git a/BUGS b/BUGS
index eb24bbd34b4f51a9e54d7eef61500a72a029d169..b4c26b53b5567657dd0c1cbb6c43b79d25c4cf53 100644
--- a/BUGS
+++ b/BUGS
@@ -75,7 +75,8 @@ Miscellaneous:
 
  * SGI window manager treats Wine windows as topmost.
 
- * KDE window manager puts popup windows like menus below the main window.
+ * KDE window manager and icewm put popup windows like menus
+   below the main window.
 
  * Write shows blank space instead of Paintbrush OLE1 object ( GetDIBits()? ).
 
diff --git a/README b/README
index 1d300f90789a65684d5a935cecb5e90e9928ce6e..515a402e52459a3c4927adbb9185b6ff817bdb1e 100644
--- a/README
+++ b/README
@@ -131,6 +131,8 @@ see what information is required.
 
 7. GETTING MORE INFORMATION
 
+DOCU:	grep -i "SearchString" `find documentation/`|more
+
 FAQ:	The Wine FAQ is located at http://www.winehq.com/faq.html.
 
 WWW:	A great deal of information about Wine is available from WineHQ at
@@ -138,7 +140,7 @@ WWW:	A great deal of information about Wine is available from WineHQ at
 	are available on the wine-patches mailing list; see 
 	http://www.winehq.com/dev.html#ml for more information.
 
-HOWTO:	A pre-release version of the Wine HOWTO is available at
+HOWTO:	The Wine HOWTO is available at
 	http://www.westfalen.de/witch/wine-HOWTO.txt .
 
 Usenet:	Please browse old messages on http://www.dejanews.com/ to check whether 
@@ -150,6 +152,8 @@ Usenet:	Please browse old messages on http://www.dejanews.com/ to check whether
 	documentation/bugreports to see what information should be included 
 	in a bug report.
 
+IRC:	Online help is available at channel #WineHQ on IRCnet.
+
 CVS:	The current Wine development tree is available through CVS.
 	Go to http://www.winehq.com/dev.html for more information.
 
diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index 4a619cbb39b31c6663da9de18b8442588ea1b4fd..701b623df102a5d0cad36848fb06f8020e343274 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -98,8 +98,8 @@ TREEVIEW_EndEditLabelNow (HWND hwnd, WPARAM wParam, LPARAM lParam);
    is checked beforehand, and that tree state is valid.  */
 
 /* FIXME: MS documentation says `GetNextVisibleItem' returns NULL 
-   if not succesfull'. Probably only applies to derefencing infoPtr
-   (ie we are offered a valid treeview structure)
+   if not successfull. Probably only applies to dereferencing infoPtr
+   (i.e. we are offered a valid treeview structure)
    and not whether there is a next `visible' child. 
    FIXME: check other failures.
  */
diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c
index f249de95c1a0e6b18887e31a5269f94a01208ac9..3dfb0c4543c0c8f55e3bd310a6481bbc2661ae33 100644
--- a/dlls/dplayx/dplay.c
+++ b/dlls/dplayx/dplay.c
@@ -540,7 +540,7 @@ static ULONG WINAPI DirectPlay2AImpl_Release
   }
   LeaveCriticalSection( &This->unk->DP_lock );
 
-  TRACE("ref count decremeneted to %lu for %p\n", refCount, This );
+  TRACE("ref count decremented to %lu for %p\n", refCount, This );
 
   /* Deallocate if this is the last reference to the object */
   if( refCount == 0 )
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c
index 4c6aaed101f203b43464e1bd2f2ac679c776e09c..4f5c0d62e5cbe34a4154b97356edfceff4b65f4e 100644
--- a/dlls/ole32/storage32.c
+++ b/dlls/ole32/storage32.c
@@ -521,7 +521,7 @@ HRESULT WINAPI StorageBaseImpl_Stat(
 {
   ICOM_THIS(StorageBaseImpl,iface);
   StgProperty    curProperty;
-  BOOL         readSucessful;
+  BOOL         readSuccessful;
 
   TRACE("(%p, %p, %lx)\n", 
 	iface, pstatstg, grfStatFlag);
@@ -535,12 +535,12 @@ HRESULT WINAPI StorageBaseImpl_Stat(
   /*
    * Read the information from the property.
    */
-  readSucessful = StorageImpl_ReadProperty(
+  readSuccessful = StorageImpl_ReadProperty(
                     This->ancestorStorage,
                     This->rootPropertySetIndex,
                     &curProperty);
 
-  if (readSucessful)
+  if (readSuccessful)
   {
     StorageUtl_CopyPropertyToSTATSTG(
       pstatstg, 
@@ -1056,7 +1056,7 @@ static ULONG getFreeProperty(
 {
   ULONG       currentPropertyIndex = 0;
   ULONG       newPropertyIndex     = PROPERTY_NULL;
-  BOOL      readSucessful        = TRUE;
+  BOOL      readSuccessful        = TRUE;
   StgProperty currentProperty;
 
   do
@@ -1064,10 +1064,10 @@ static ULONG getFreeProperty(
     /*
      * Start by reading the root property
      */
-    readSucessful = StorageImpl_ReadProperty(storage->ancestorStorage,
+    readSuccessful = StorageImpl_ReadProperty(storage->ancestorStorage,
                                                currentPropertyIndex,
                                                &currentProperty);
-    if (readSucessful)
+    if (readSuccessful)
     {
       if (currentProperty.sizeOfNameString == 0)
       {
@@ -1091,7 +1091,7 @@ static ULONG getFreeProperty(
   /* 
    * grow the property chain 
    */
-  if (! readSucessful)
+  if (! readSuccessful)
   {
     StgProperty    emptyProperty;
     ULARGE_INTEGER newSize;
@@ -2027,7 +2027,7 @@ HRESULT StorageImpl_Construct(
 {
   HRESULT     hr = S_OK;
   StgProperty currentProperty;
-  BOOL      readSucessful;
+  BOOL      readSuccessful;
   ULONG       currentPropertyIndex;
   
   if ( FAILED( validateSTGM(openFlags) ))
@@ -2175,12 +2175,12 @@ HRESULT StorageImpl_Construct(
   
   do
   {
-    readSucessful = StorageImpl_ReadProperty(
+    readSuccessful = StorageImpl_ReadProperty(
                       This, 
                       currentPropertyIndex, 
                       &currentProperty);
     
-    if (readSucessful)
+    if (readSuccessful)
     {
       if ( (currentProperty.sizeOfNameString != 0 ) &&
            (currentProperty.propertyType     == PROPTYPE_ROOT) )
@@ -2191,9 +2191,9 @@ HRESULT StorageImpl_Construct(
 
     currentPropertyIndex++;
     
-  } while (readSucessful && (This->rootPropertySetIndex == PROPERTY_NULL) );
+  } while (readSuccessful && (This->rootPropertySetIndex == PROPERTY_NULL) );
   
-  if (!readSucessful)
+  if (!readSuccessful)
   {
     /* TODO CLEANUP */
     return E_FAIL;
@@ -2922,20 +2922,20 @@ BOOL StorageImpl_ReadProperty(
 {
   BYTE           currentProperty[PROPSET_BLOCK_SIZE];
   ULARGE_INTEGER offsetInPropSet;
-  BOOL         readSucessful;
+  BOOL         readSuccessful;
   ULONG          bytesRead;
 
   offsetInPropSet.s.HighPart = 0;
   offsetInPropSet.s.LowPart  = index * PROPSET_BLOCK_SIZE;
   
-  readSucessful = BlockChainStream_ReadAt(
+  readSuccessful = BlockChainStream_ReadAt(
                     This->rootBlockChain,
                     offsetInPropSet,
                     PROPSET_BLOCK_SIZE,
                     currentProperty,
                     &bytesRead);
   
-  if (readSucessful)
+  if (readSuccessful)
   {
     memset(buffer->name, 0, sizeof(buffer->name));
     memcpy(
@@ -3003,7 +3003,7 @@ BOOL StorageImpl_ReadProperty(
     buffer->size.s.HighPart = 0;
   }
 
-  return readSucessful;
+  return readSuccessful;
 }
 
 /*********************************************************************
@@ -3016,7 +3016,7 @@ BOOL StorageImpl_WriteProperty(
 {
   BYTE           currentProperty[PROPSET_BLOCK_SIZE];
   ULARGE_INTEGER offsetInPropSet;
-  BOOL         writeSucessful;
+  BOOL         writeSuccessful;
   ULONG          bytesWritten;
 
   offsetInPropSet.s.HighPart = 0;
@@ -3091,12 +3091,12 @@ BOOL StorageImpl_WriteProperty(
       OFFSET_PS_SIZE,         
       buffer->size.s.LowPart);
 
-  writeSucessful = BlockChainStream_WriteAt(This->rootBlockChain,
+  writeSuccessful = BlockChainStream_WriteAt(This->rootBlockChain,
                                             offsetInPropSet,
                                             PROPSET_BLOCK_SIZE,
                                             currentProperty,
                                             &bytesWritten);
-  return writeSucessful;
+  return writeSuccessful;
 }
 
 BOOL StorageImpl_ReadBigBlock(
@@ -3607,7 +3607,7 @@ HRESULT WINAPI IEnumSTATSTGImpl_Reset(
   IEnumSTATSTGImpl* const This=(IEnumSTATSTGImpl*)iface;
 
   StgProperty rootProperty;
-  BOOL      readSucessful;
+  BOOL      readSuccessful;
 
   /*
    * Re-initialize the search stack to an empty stack
@@ -3617,12 +3617,12 @@ HRESULT WINAPI IEnumSTATSTGImpl_Reset(
   /*
    * Read the root property from the storage.
    */
-  readSucessful = StorageImpl_ReadProperty(
+  readSuccessful = StorageImpl_ReadProperty(
                     This->parentStorage,
                     This->firstPropertyNode, 
                     &rootProperty);
 
-  if (readSucessful)
+  if (readSuccessful)
   {
     assert(rootProperty.sizeOfNameString!=0);
 
@@ -3793,7 +3793,7 @@ void IEnumSTATSTGImpl_PushSearchNode(
   ULONG             nodeToPush)
 {
   StgProperty rootProperty;
-  BOOL      readSucessful;
+  BOOL      readSuccessful;
 
   /*
    * First, make sure we're not trying to push an unexisting node.
@@ -3821,12 +3821,12 @@ void IEnumSTATSTGImpl_PushSearchNode(
   /*
    * Read the root property from the storage.
    */
-  readSucessful = StorageImpl_ReadProperty(
+  readSuccessful = StorageImpl_ReadProperty(
                     This->parentStorage,
                     nodeToPush, 
                     &rootProperty);
 
-  if (readSucessful)
+  if (readSuccessful)
   {
     assert(rootProperty.sizeOfNameString!=0);
 
@@ -3995,19 +3995,19 @@ void BlockChainStream_Destroy(BlockChainStream* This)
 ULONG BlockChainStream_GetHeadOfChain(BlockChainStream* This)
 {
   StgProperty chainProperty;
-  BOOL      readSucessful;
+  BOOL      readSuccessful;
 
   if (This->headOfStreamPlaceHolder != 0)
     return *(This->headOfStreamPlaceHolder);
 
   if (This->ownerPropertyIndex != PROPERTY_NULL)
   {
-    readSucessful = StorageImpl_ReadProperty(
+    readSuccessful = StorageImpl_ReadProperty(
                       This->parentStorage,
                       This->ownerPropertyIndex,
                       &chainProperty);
 
-    if (readSucessful)
+    if (readSuccessful)
     {
       return chainProperty.startingBlock;
     }
@@ -4516,16 +4516,16 @@ ULONG SmallBlockChainStream_GetHeadOfChain(
   SmallBlockChainStream* This)
 {
   StgProperty chainProperty;
-  BOOL      readSucessful;
+  BOOL      readSuccessful;
 
   if (This->ownerPropertyIndex)
   {
-    readSucessful = StorageImpl_ReadProperty(
+    readSuccessful = StorageImpl_ReadProperty(
                       This->parentStorage,
                       This->ownerPropertyIndex,
                       &chainProperty);
 
-    if (readSucessful)
+    if (readSuccessful)
     {
       return chainProperty.startingBlock;
     }
diff --git a/dlls/shell32/shlfolder.c b/dlls/shell32/shlfolder.c
index b3573c424430dae97196192c87c4959496a81607..884d015f1b7f8d7973e210975a83faea6f6741ce 100644
--- a/dlls/shell32/shlfolder.c
+++ b/dlls/shell32/shlfolder.c
@@ -100,7 +100,7 @@ static HRESULT SHELL32_ParseNextElement(
 	LPITEMIDLIST	pidlOut, pidlTemp = NULL;
 	IShellFolder	*psfChild;
 	
-	TRACE("(%p, %p, %s)\n",psf, pidlInOut? *pidlInOut: "(null)", debugstr_w(szNext));
+	TRACE("(%p, %p, %s)\n",psf, pidlInOut ? *pidlInOut : NULL, debugstr_w(szNext));
 
 
 	/* get the shellfolder for the child pidl and let it analyse further */
diff --git a/documentation/no-windows b/documentation/no-windows
index d76d9f000c829f68a625e15e24e2faef0d9d09d7..457349cceda1a37a0599d9dd8b11c827c87984c9 100644
--- a/documentation/no-windows
+++ b/documentation/no-windows
@@ -61,3 +61,6 @@ C:\windows is really /home/ego/wine/drives/c).
 - Put regedit.exe in the C:\windows directory (office95 imports
   a *.reg file when it runs with a empty registry, don't know
   about office97).
+
+- Also add winhelp.exe and winhlp32.exe if you want to be able to browse
+  through your programs' help function.
diff --git a/documentation/wine.man.in b/documentation/wine.man.in
index 7c2f9de8adbc98e02401a620f7442fabeba8c45b..15fa7b21501c32b7f74e05119f7dd91d9e4847b3 100644
--- a/documentation/wine.man.in
+++ b/documentation/wine.man.in
@@ -93,6 +93,9 @@ file contained in the source distribution.
 .TP
 .I -backingstore
 Turn on backing store
+Backingstore stores pixels of obscured window parts off-screen.
+This buffer is used to restore these parts faster once they are to reappear,
+but it consumes additional memory of course.
 .TP
 .I -config filename
 Use the named configuration file rather than the default
diff --git a/graphics/d3dtexture.c b/graphics/d3dtexture.c
index 572cc25bc266fa2b6c0126567adb8af297768245..47e95bbe38ac28ecaf7df9f425a9af6f50407391 100644
--- a/graphics/d3dtexture.c
+++ b/graphics/d3dtexture.c
@@ -280,7 +280,7 @@ static HRESULT WINAPI IDirect3DTextureImpl_GetHandle(LPDIRECT3DTEXTURE iface,
     glGenTextures(1, &(This->tex_name));
   LEAVE_GL();
 
-  TRACE("OpenGL texture handle is : %ld\n", This->tex_name);
+  TRACE("OpenGL texture handle is : %d\n", This->tex_name);
   
   return D3D_OK;
 }
@@ -323,7 +323,7 @@ static HRESULT WINAPI IDirect3DTexture2Impl_GetHandle(LPDIRECT3DTEXTURE2 iface,
   glGenTextures(1, &(This->tex_name));
   LEAVE_GL();
 
-  TRACE("OpenGL texture handle is : %ld\n", This->tex_name);
+  TRACE("OpenGL texture handle is : %d\n", This->tex_name);
   
   return D3D_OK;
 }
diff --git a/if1632/snoop.c b/if1632/snoop.c
index 780e79256ef2d1fd9b3e9d109bda34581f13c6e8..797e42bc307136a5dcf42d8dcebea27acf3ca880 100644
--- a/if1632/snoop.c
+++ b/if1632/snoop.c
@@ -7,6 +7,7 @@
 #include <assert.h>
 #include <string.h>
 #include "winbase.h"
+#include "winuser.h"
 #include "winnt.h"
 #include "heap.h"
 #include "global.h"
diff --git a/loader/loadorder.c b/loader/loadorder.c
index 70575bee000bc8f51a331b31b6b496b78633e1a6..13708fd9320eb966577d74b64d8e1c8b75a63a78 100644
--- a/loader/loadorder.c
+++ b/loader/loadorder.c
@@ -168,8 +168,8 @@ static BOOL ParseLoadOrder(char *order, module_loadorder_t *mlo)
 /***************************************************************************
  *	AddLoadOrder	(internal, static)
  *
- * Adds an entry in the list of overrides. If the entry exists then the
- * override parameter determines whether it will be overwriten.
+ * Adds an entry in the list of overrides. If the entry exists, then the
+ * override parameter determines whether it will be overwritten.
  */
 static BOOL AddLoadOrder(module_loadorder_t *plo, BOOL override)
 {
@@ -213,9 +213,9 @@ static BOOL AddLoadOrder(module_loadorder_t *plo, BOOL override)
 /***************************************************************************
  *	AddLoadOrderSet	(internal, static)
  *
- * Adds an set of entries in the list of overrides from the key parameter.
- * If the entry exists then the override parameter determines whether it
- * will be overwriten.
+ * Adds a set of entries in the list of overrides from the key parameter.
+ * If the entry exists, then the override parameter determines whether it
+ * will be overwritten.
  */
 static BOOL AddLoadOrderSet(char *key, char *order, BOOL override)
 {
@@ -300,7 +300,7 @@ endit:
  *	MODULE_InitLoadOrder	(internal)
  *
  * Initialize the load order from the wine.conf file.
- * The section has tyhe following format:
+ * The section has the following format:
  * Section:
  *	[DllDefaults]
  *
@@ -310,11 +310,11 @@ endit:
  * environment (see note in code below).
  *
  *	DefaultLoadOrder=native,elfdll,so,builtin
- * A comma seperated list of module-types to try to load in that specific
+ * A comma separated list of module types to try to load in that specific
  * order. The DefaultLoadOrder key is used as a fallback when a module is
- * not specified explicitely. If the DefaultLoadOrder key is not found, 
+ * not specified explicitly. If the DefaultLoadOrder key is not found, 
  * then the order "dll,elfdll,so,bi" is used
- * The possible module-types are:
+ * The possible module types are:
  *	- native	Native windows dll files
  *	- elfdll	Dlls encapsulated in .so libraries
  *	- so		Native .so libraries mapped to dlls
@@ -384,7 +384,7 @@ BOOL MODULE_InitLoadOrder(void)
 	nbuffer = PROFILE_GetWineIniString("DllDefaults", "DefaultLoadOrder", "n,e,s,b", buffer, sizeof(buffer));
 	if(!nbuffer)
 	{
-		MESSAGE("MODULE_InitLoadOrder: misteriously read nothing from default loadorder\n");
+		MESSAGE("MODULE_InitLoadOrder: mysteriously read nothing from default loadorder\n");
 		return FALSE;
 	}
 
diff --git a/loader/ne/module.c b/loader/ne/module.c
index 89ca1ddd15a3d09078a64c28f8f2cc4a1c5d8d49..3f203d70cee751b31c7e6de984d861cfcb1ba69d 100644
--- a/loader/ne/module.c
+++ b/loader/ne/module.c
@@ -837,12 +837,12 @@ static HINSTANCE16 NE_DoLoadModule( NE_MODULE *pModule )
     /* Allocate the segments for this module */
 
     if (!NE_CreateAllSegments( pModule ))
-        return 8;  /* Insufficient memory */
+        return ERROR_NOT_ENOUGH_MEMORY; /* 8 */
 
     /* Load the referenced DLLs */
 
     if (!NE_LoadDLLs( pModule ))
-        return 2;
+        return ERROR_FILE_NOT_FOUND; /* 2 */
 
     /* Load the segments */
 
diff --git a/loader/pe_image.c b/loader/pe_image.c
index 7c0128cd07ce1014db496898f96f9b682d5d7816..f81e4d97eabf3a95903b3425df2ed3df998af26d 100644
--- a/loader/pe_image.c
+++ b/loader/pe_image.c
@@ -509,7 +509,7 @@ HMODULE PE_LoadImage( HANDLE hFile, LPCSTR filename, WORD *version )
     /* Check signature */
     if ( nt->Signature != IMAGE_NT_SIGNATURE )
     {
-        WARN("%s image doesn't have PE signature, but 0x%08lx\n", nt->Signature );
+        WARN("%s image doesn't have PE signature, but 0x%08lx\n", filename, nt->Signature );
         goto error;
     }
 
diff --git a/scheduler/process.c b/scheduler/process.c
index 7927a10c6bd0f21ee31b61a0023e443353af94d0..eb6c4bd6a965b9563dc2f79c8ddbd487ecbd0be6 100644
--- a/scheduler/process.c
+++ b/scheduler/process.c
@@ -98,15 +98,15 @@ BOOL PROCESS_IsCurrent( HANDLE handle )
  *
  * Convert a process id to a PDB, making sure it is valid.
  */
-PDB *PROCESS_IdToPDB( DWORD id )
+PDB *PROCESS_IdToPDB( DWORD pid )
 {
     PDB *pdb;
 
-    if (!id) return PROCESS_Current();
+    if (!pid) return PROCESS_Current();
     pdb = PROCESS_First;
     while (pdb)
     {
-        if ((DWORD)pdb->server_pid == id) return pdb;
+        if ((DWORD)pdb->server_pid == pid) return pdb;
         pdb = pdb->next;
     }
     SetLastError( ERROR_INVALID_PARAMETER );
diff --git a/windows/x11drv/wnd.c b/windows/x11drv/wnd.c
index 1ab2c6739545fa52a36fc04a50079b38ea0b739a..ccd9882cc70c82c21fe257efe845767fea475084 100644
--- a/windows/x11drv/wnd.c
+++ b/windows/x11drv/wnd.c
@@ -387,7 +387,7 @@ WND *X11DRV_WND_SetParent(WND *wndPtr, WND *pWndParent)
                 {
                     CREATESTRUCTA cs;
                     cs.lpCreateParams = NULL;
-                    cs.hInstance = 0; /* not used if following call */
+                    cs.hInstance = 0; /* not used in following call */
                     cs.hMenu = 0; /* not used in following call */
                     cs.hwndParent = pWndParent->hwndSelf;
                     cs.cy = wndPtr->rectWindow.bottom - wndPtr->rectWindow.top;