- the OLE version returned was too low
- renamed OABuildVersion16 to OaBuildVersion16
- spelling fixes

diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index d5f2fca..d0d352c 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -188,11 +188,11 @@
  *           CoBuildVersion [COMPOBJ.1]
  *
  * RETURNS
- *	Current built version, hiword is majornumber, loword is minornumber
+ *	Current build version, hiword is majornumber, loword is minornumber
  */
 DWORD WINAPI CoBuildVersion(void)
 {
-    TRACE("(void)\n");
+    TRACE("Returning version %d, build %d.\n", rmm, rup);
     return (rmm<<16)+rup;
 }
 
@@ -1213,7 +1213,7 @@
   *lpdwRegister = newClass->dwCookie;
     
   /*
-   * We're successfyl Yippee!
+   * We're successful Yippee!
    */
   return S_OK;
 }
diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c
index 8481b1a..7fe9f42 100644
--- a/dlls/ole32/ole2.c
+++ b/dlls/ole32/ole2.c
@@ -143,7 +143,7 @@
  */
 DWORD WINAPI OleBuildVersion(void)
 {
-    TRACE("(void)\n");
+    TRACE("Returning version %d, build %d.\n", rmm, rup);
     return (rmm<<16)+rup;
 }
 
diff --git a/dlls/oleaut32/oleaut.c b/dlls/oleaut32/oleaut.c
index 834f622..0d924ff 100644
--- a/dlls/oleaut32/oleaut.c
+++ b/dlls/oleaut32/oleaut.c
@@ -5,6 +5,7 @@
 #include <string.h>
 #include "winuser.h"
 #include "winerror.h"
+#include "winversion.h"
 #include "oleauto.h"
 #include "wine/obj_base.h"
 #include "heap.h"
@@ -43,3 +44,37 @@
 	FIXME("(%s,%p,%p),stub!\n",buf,preserved,ppunk);
 	return E_FAIL;
 }
+
+/***********************************************************************
+ *           OaBuildVersion           [OLEAUT32.170]
+ *
+ * known OLEAUT32.DLL versions:
+ * OLE 2.1  NT				1993-95	10     3023
+ * OLE 2.1					10     3027
+ * OLE 2.20 W95/NT			1993-96	20     4112
+ * OLE 2.20 W95/NT			1993-96	20     4118
+ * OLE 2.20 W95/NT			1993-96	20     4122
+ * OLE 2.30 W95/NT			1993-98	30     4265
+ * OLE 2.40 NT??			1993-98	40     4267
+ * OLE 2.40 W98 SE orig. file		1993-98	40     4275
+ */
+UINT WINAPI OaBuildVersion()
+{
+    FIXME("Please report to a.mohr@mailto.de if you get version error messages !\n");
+    switch(VERSION_GetVersion())
+    {
+	case WIN31:
+		return MAKELONG(4049, 20); /* from Win32s 1.1e */
+	case WIN95:
+		return MAKELONG(4265, 30);
+	case WIN98:
+		return MAKELONG(4275, 40); /* value of W98 SE; orig. W98 AFAIK has 4265, 30 just as W95 */
+	case NT351:
+		return MAKELONG(4265, 30); /* value borrowed from Win95 */
+	case NT40:
+		return MAKELONG(4122, 20); /* ouch ! Quite old, I guess */
+	default:
+		ERR("Version value not known yet. Please investigate it !\n");
+		return 0x0;
+    }
+}
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index a040e4e..3e705a8 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -3,20 +3,20 @@
  *
  *	Copyright 1997	Marcus Meissner
  *		      1999  Rein Klazes
- * there is much left to do here before it can be usefull for real world
+ * there is much left to do here before it can be useful for real world
  * programs
  * know problems:
  * -. Only one format of typelibs is supported
- * -. All testing until sofar is done using special written windows programs
+ * -. All testing so far is done using special written windows programs
  * -. Data structures are straightforward, but slow for look-ups.
  * -. (related) nothing is hashed
- * -. a typelib is always read in its entirely into memory and never released.
+ * -. a typelib is always read in its entirety into memory and never released.
  * -. there are a number of stubs in ITypeLib and ITypeInfo interfaces. Most
  *      of them I don't know yet how to implement them.
  * -. Most error return values are just guessed not checked with windows
  *      behaviour.
- * -. all locale stuf ignored
- * -. move stuf to wine/dlls
+ * -. all locale stuff ignored
+ * -. move stuff to wine/dlls
  * -. didn't bother with a c++ interface
  * -. lousy fatal error handling
  * -. some methods just return pointers to internal data structures, this is
@@ -267,22 +267,32 @@
 }
 
 /****************************************************************************
- *	OABuildVersion				(TYPELIB.15)
- * RETURNS
- *	path of typelib
+ *	OaBuildVersion				(TYPELIB.15)
+ *
+ * known TYPELIB.DLL versions:
+ *
+ * OLE 2.01 no OaBuildVersion() avail	1993	--	---
+ * OLE 2.02				1993-94	02     3002
+ * OLE 2.03					23	730
+ * OLE 2.03					03     3025
+ * OLE 2.03 W98 SE orig. file !!	1993-95	10     3024
+ * OLE 2.1   NT				1993-95	??	???
+ * OLE 2.3.1 W95				23	700
  */
-DWORD WINAPI OABuildVersion16(void)
+DWORD WINAPI OaBuildVersion16(void)
 {
-WINDOWS_VERSION ver = VERSION_GetVersion();
-
-    switch (ver) {
-      case WIN95:
-	return MAKELONG(0xbd0, 0xa); /* Win95A */
+    FIXME("Please report to a.mohr@mailto.de if you get version error messages !\n");
+    switch(VERSION_GetVersion())
+    {
       case WIN31:
-	return MAKELONG(0xbd3, 0x3); /* WfW 3.11 */
+		return MAKELONG(3027, 3); /* WfW 3.11 */
+	case WIN95:
+		return MAKELONG(700, 23); /* Win95A */
+	case WIN98:
+		return MAKELONG(3024, 10); /* W98 SE */
       default:
 	FIXME_(ole)("Version value not known yet. Please investigate it !");
-	return MAKELONG(0xbd0, 0xa); /* return Win95A for now */
+		return 0;
     }
 }
 
diff --git a/dlls/oleaut32/typelib.spec b/dlls/oleaut32/typelib.spec
index 7784023..d6bd90c 100644
--- a/dlls/oleaut32/typelib.spec
+++ b/dlls/oleaut32/typelib.spec
@@ -12,4 +12,4 @@
 10 stub REGISTERTYPELIB              
 11 stub LOADREGTYPELIB               
 14 pascal QueryPathOfRegTypeLib(ptr word word word ptr) QueryPathOfRegTypeLib16
-15 pascal OABuildVersion() OABuildVersion16               
+15 pascal OaBuildVersion() OaBuildVersion16               
diff --git a/include/ole2ver.h b/include/ole2ver.h
index a7b301c..6844ab5 100644
--- a/include/ole2ver.h
+++ b/include/ole2ver.h
@@ -5,9 +5,24 @@
 #ifndef __WINE_OLE2VER_H
 #define __WINE_OLE2VER_H
 
-	/* OLE version */
+/*
+ * other versions rmm/rup:
+ * 23/639
+ * 23/700
+ * 23/730
+ * 23/824
+ *
+ * Win98 SE original files:
+ * COMPOBJ: CoBuildVersion 23/700
+ * OLE2: OleBuildVersion -> COMPOBJ.CoBuildVersion
+ * OLE32: CoBuildVersion and Ole~ 23/824 
+ *
+ * We probably should reorganize the OLE version stuff, i.e.
+ * use different values for every *BuildVersion function and Win version.
+ */
+
+/* bad: we shouldn't make use of it that globally ! */
 #define rmm             23
-#define rup            639
+#define rup		824
 
 #endif  /* __WINE_OLE2VER_H */
-
diff --git a/misc/version.c b/misc/version.c
index c1163b3..82c0b7a 100644
--- a/misc/version.c
+++ b/misc/version.c
@@ -554,30 +554,6 @@
 }
 
 /***********************************************************************
- *           OaBuildVersion           [OLEAUT32.170]
- */
-UINT WINAPI OaBuildVersion()
-{
-    WINDOWS_VERSION ver = VERSION_GetVersion();
-
-    FIXME("Please report to a.mohr@mailto.de if you get version error messages !\n");
-    switch(VersionData[ver].getVersion32)
-    {
-        case 0x80000a03: /* Win 3.1 */
-		return 0x140fd1; /* from Win32s 1.1e */
-        case 0xc0000004: /* Win 95 */
-	 case 0xc0000a04: /* Win 98: verified same as Win95 */
-		return 0x1e10a9; /* some older version: 0x0a0bd3 */
-        case 0x04213303: /* NT 3.51 */
-		FIXME("NT 3.51 version value unknown !\n");
-		return 0x1e10a9; /* value borrowed from Win95 */
-        case 0x05650004: /* NT 4.0 */
-		return 0x141016;
-	default:
-		return 0x0;
-    }
-}
-/***********************************************************************
  *        VERSION_OsIsUnicode	[internal]
  *
  * NOTES