diff --git a/include/winbase.h b/include/winbase.h
index eeb3de4..a617d93 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -833,100 +833,6 @@
 #define	FORMAT_MESSAGE_ARGUMENT_ARRAY	0x00002000
 #define	FORMAT_MESSAGE_MAX_WIDTH_MASK	0x000000FF
 
-typedef struct {
-	DWORD dwOSVersionInfoSize;
-	DWORD dwMajorVersion;
-	DWORD dwMinorVersion;
-	DWORD dwBuildNumber;
-	DWORD dwPlatformId;
-	CHAR szCSDVersion[128];
-} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
-
-typedef struct {
-	DWORD dwOSVersionInfoSize;
-	DWORD dwMajorVersion;
-	DWORD dwMinorVersion;
-	DWORD dwBuildNumber;
-	DWORD dwPlatformId;
-	WCHAR szCSDVersion[128];
-} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW;
-
-DECL_WINELIB_TYPE_AW(OSVERSIONINFO)
-DECL_WINELIB_TYPE_AW(POSVERSIONINFO)
-DECL_WINELIB_TYPE_AW(LPOSVERSIONINFO)
-
-typedef struct {
-	DWORD dwOSVersionInfoSize;
-	DWORD dwMajorVersion;
-	DWORD dwMinorVersion;
-	DWORD dwBuildNumber;
-	DWORD dwPlatformId;
-	CHAR szCSDVersion[128];
-	WORD wServicePackMajor;
-	WORD wServicePackMinor;
-	WORD wSuiteMask;
-	BYTE wProductType;
-	BYTE wReserved;
-} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
-
-typedef struct {
-	DWORD dwOSVersionInfoSize;
-	DWORD dwMajorVersion;
-	DWORD dwMinorVersion;
-	DWORD dwBuildNumber;
-	DWORD dwPlatformId;
-	WCHAR szCSDVersion[128];
-	WORD wServicePackMajor;
-	WORD wServicePackMinor;
-	WORD wSuiteMask;
-	BYTE wProductType;
-	BYTE wReserved;
-} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
-
-DECL_WINELIB_TYPE_AW(OSVERSIONINFOEX)
-DECL_WINELIB_TYPE_AW(POSVERSIONINFOEX)
-DECL_WINELIB_TYPE_AW(LPOSVERSIONINFOEX)
-
-ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
-
-#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_)))
-
-#define	VER_PLATFORM_WIN32s             	0
-#define	VER_PLATFORM_WIN32_WINDOWS      	1
-#define	VER_PLATFORM_WIN32_NT           	2
-
-#define	VER_MINORVERSION			0x00000001
-#define	VER_MAJORVERSION			0x00000002
-#define	VER_BUILDNUMBER				0x00000004
-#define	VER_PLATFORMID				0x00000008
-#define	VER_SERVICEPACKMINOR			0x00000010
-#define	VER_SERVICEPACKMAJOR			0x00000020
-#define	VER_SUITENAME				0x00000040
-#define	VER_PRODUCT_TYPE			0x00000080
-
-#define	VER_NT_WORKSTATION			1
-#define	VER_NT_DOMAIN_CONTROLLER		2
-#define	VER_NT_SERVER				3
-
-#define	VER_SUITE_SMALLBUSINESS			0x00000001
-#define	VER_SUITE_ENTERPRISE			0x00000002
-#define	VER_SUITE_BACKOFFICE			0x00000004
-#define	VER_SUITE_COMMUNICATIONS		0x00000008
-#define	VER_SUITE_TERMINAL			0x00000010
-#define	VER_SUITE_SMALLBUSINESS_RESTRICTED	0x00000020
-#define	VER_SUITE_EMBEDDEDNT			0x00000040
-#define	VER_SUITE_DATACENTER			0x00000080
-#define	VER_SUITE_SINGLEUSERTS			0x00000100
-#define	VER_SUITE_PERSONAL			0x00000200
-
-#define	VER_EQUAL				1
-#define	VER_GREATER				2
-#define	VER_GREATER_EQUAL			3
-#define	VER_LESS				4
-#define	VER_LESS_EQUAL				5
-#define	VER_AND					6
-#define	VER_OR					7
-
 typedef struct tagCOMSTAT
 {
     DWORD fCtsHold : 1;
@@ -1102,11 +1008,6 @@
 	ComputerNameMax
 } COMPUTER_NAME_FORMAT;
 
-/*DWORD WINAPI GetVersion( void );*/
-BOOL WINAPI GetVersionExA(OSVERSIONINFOA*);
-BOOL WINAPI GetVersionExW(OSVERSIONINFOW*);
-#define GetVersionEx WINELIB_NAME_AW(GetVersionEx)
-
 #define HW_PROFILE_GUIDLEN	39
 #define MAX_PROFILE_LEN		80
 
@@ -1725,7 +1626,10 @@
 UINT        WINAPI GetTempPathA(UINT,LPSTR);
 UINT        WINAPI GetTempPathW(UINT,LPWSTR);
 #define     GetTempPath WINELIB_NAME_AW(GetTempPath)
-LONG        WINAPI GetVersion(void);
+DWORD       WINAPI GetVersion(void);
+BOOL        WINAPI GetVersionExA(OSVERSIONINFOA*);
+BOOL        WINAPI GetVersionExW(OSVERSIONINFOW*);
+#define     GetVersionEx WINELIB_NAME_AW(GetVersionEx)
 BOOL        WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD);
 BOOL        WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD);
 #define     GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation)
