Revert previous change.  MAL preferred the old version.
diff --git a/Lib/encodings/bz2_codec.py b/Lib/encodings/bz2_codec.py
index 22b32e2..870474c 100644
--- a/Lib/encodings/bz2_codec.py
+++ b/Lib/encodings/bz2_codec.py
@@ -8,20 +8,57 @@
 
 """
 import codecs
-import bz2
+import bz2 # this codec needs the optional bz2 module !
 
-def encode(input, errors='strict'):
+### Codec APIs
+
+def bz2_encode(input,errors='strict'):
+
+    """ Encodes the object input and returns a tuple (output
+        object, length consumed).
+
+        errors defines the error handling to apply. It defaults to
+        'strict' handling which is the only currently supported
+        error handling for this codec.
+
+    """
     assert errors == 'strict'
     output = bz2.compress(input)
     return (output, len(input))
 
-def decode(input, errors='strict'):
+def bz2_decode(input,errors='strict'):
+
+    """ Decodes the object input and returns a tuple (output
+        object, length consumed).
+
+        input must be an object which provides the bf_getreadbuf
+        buffer slot. Python strings, buffer objects and memory
+        mapped files are examples of objects providing this slot.
+
+        errors defines the error handling to apply. It defaults to
+        'strict' handling which is the only currently supported
+        error handling for this codec.
+
+    """
     assert errors == 'strict'
     output = bz2.decompress(input)
     return (output, len(input))
 
+class Codec(codecs.Codec):
+
+    def encode(self, input, errors='strict'):
+        return bz2_encode(input, errors)
+    def decode(self, input, errors='strict'):
+        return bz2_decode(input, errors)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
 ### encodings module API
 
 def getregentry():
 
-    return (encode, decode, codecs.StreamReader, codecs.StreamWriter)
+    return (bz2_encode,bz2_decode,StreamReader,StreamWriter)