diff --git a/mwclient/RELEASE-NOTES.txt b/mwclient/RELEASE-NOTES.txt
index 4c7a8ad65e21956c0fc2e9521eaac4031c3ec8d2..34eabb5fb75bf84fee87e7c8ef2362f85d379f56 100644
--- a/mwclient/RELEASE-NOTES.txt
+++ b/mwclient/RELEASE-NOTES.txt
@@ -7,6 +7,7 @@ This is mwclient 0.6.5. The following are the release notes for this version.
   on some versions of Python.
 * Fix for upload by URL
 * Handle readapidenied error in site init
+* Fix version parsing for almost any sane version string
 
 == Changes in version 0.6.4 ==
 * Added support for upload API
diff --git a/mwclient/client.py b/mwclient/client.py
index b5bc53de090972653c7ff49a0a662381a7a577e3..d9bf6f1f548a91c5990b3ad930166e01631921c8 100644
--- a/mwclient/client.py
+++ b/mwclient/client.py
@@ -114,18 +114,13 @@ class Site(object):
 					if s[i] < '0' or s[i] > '9':
 						break
 					i += 1
-				return int(s[:i]), s[i:]
-			# FIXME! Fix those awful two hacks
-			if len(version) == 2:
-				# An alpha version
-				self.version = (int(version[0]), ) + split_num(version[1])
-			elif len(version) == 3 and 'rc' in version[2]:
-				# Release candidate
-				self.version = (int(version[0]), int(version[1]), version[2])
-			elif len(version) == 3:
-				# Regular y.x.z version
-				self.version = (int(version[0]), int(version[1]), int(version[2]))
-			else:
+				if s[i:]:
+					return (int(s[:i]), s[i:], )
+				else:
+					return (int(s[:i]), )
+			self.version = sum((split_num(s) for s in version), ())
+			
+			if len(self.version) < 2:
 				raise errors.MediaWikiVersionError('Unknown MediaWiki %s' % '.'.join(version))
 		else:
 			raise errors.MediaWikiVersionError('Unknown generator %s' % self.site['generator'])