diff --git a/Lib/platform.py b/Lib/platform.py
index 29d55ec..ee18749 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -1296,10 +1296,10 @@
 def _sys_version(sys_version=None):
 
     """ Returns a parsed version of Python's sys.version as tuple
-       (name, version, branch, revision, buildno, builddate, compiler)
-       referring to the Python implementation name, version, branch,
-       revision, build number, build date/time as string and the compiler
-       identification string.
+        (name, version, branch, revision, buildno, builddate, compiler)
+        referring to the Python implementation name, version, branch,
+        revision, build number, build date/time as string and the compiler
+        identification string.
 
         Note that unlike the Python sys.version, the returned value
         for the Python version will always include the patchlevel (it
@@ -1416,8 +1416,6 @@
         will always include the patchlevel (it defaults to 0).
 
     """
-    if hasattr(sys, 'version_info'):
-        return '%i.%i.%i' % sys.version_info[:3]
     return _sys_version()[1]
 
 def python_version_tuple():
@@ -1429,8 +1427,6 @@
         will always include the patchlevel (it defaults to 0).
 
     """
-    if hasattr(sys, 'version_info'):
-        return sys.version_info[:3]
     return tuple(string.split(_sys_version()[1], '.'))
 
 def python_branch():
diff --git a/Lib/test/test_platform.py b/Lib/test/test_platform.py
index 2fa1309..9056d47 100644
--- a/Lib/test/test_platform.py
+++ b/Lib/test/test_platform.py
@@ -25,40 +25,49 @@
             finally:
                 os.remove(link)
 
-    def test_machine(self):
-        res = platform.machine()
-
-    def test_node(self):
-        res = platform.node()
-
     def test_platform(self):
         for aliased in (False, True):
             for terse in (False, True):
                 res = platform.platform(aliased, terse)
 
+    def test_system(self):
+        res = platform.system()
+
+    def test_node(self):
+        res = platform.node()
+
+    def test_release(self):
+        res = platform.release()
+
+    def test_version(self):
+        res = platform.version()
+
+    def test_machine(self):
+        res = platform.machine()
+
     def test_processor(self):
         res = platform.processor()
 
+    def test_python_implementation(self):
+        res = platform.python_implementation()
+
+    def test_python_version(self):
+        res1 = platform.python_version()
+        res2 = platform.python_version_tuple()
+        self.assertEqual(res1, ".".join(res2))
+
+    def test_python_branch(self):
+        res = platform.python_branch()
+
+    def test_python_revision(self):
+        res = platform.python_revision()
+
     def test_python_build(self):
         res = platform.python_build()
 
     def test_python_compiler(self):
         res = platform.python_compiler()
 
-    def test_version(self):
-        res1 = platform.version()
-        res2 = platform.version_tuple()
-        self.assertEqual(res1, ".".join(res2))
-
-    def test_release(self):
-        res = platform.release()
-
-    def test_system(self):
-        res = platform.system()
-
-    def test_version(self):
-        res = platform.version()
-
     def test_system_alias(self):
         res = platform.system_alias(
             platform.system(),
