diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py
index aeafe9d..2d7c021 100644
--- a/Lib/sre_compile.py
+++ b/Lib/sre_compile.py
@@ -6,9 +6,6 @@
 #
 # Copyright (c) 1997-2000 by Secret Labs AB.  All rights reserved.
 #
-# This code can only be used for 1.6 alpha testing.  All other use
-# require explicit permission from Secret Labs AB.
-#
 # Portions of this engine have been developed in cooperation with
 # CNRI.  Hewlett-Packard provided funding for 1.6 integration and
 # other compatibility work.
diff --git a/Lib/sre_constants.py b/Lib/sre_constants.py
index c996960..1c9810f 100644
--- a/Lib/sre_constants.py
+++ b/Lib/sre_constants.py
@@ -7,9 +7,6 @@
 #
 # Copyright (c) 1998-2000 by Secret Labs AB.  All rights reserved.
 #
-# This code can only be used for 1.6 alpha testing.  All other use
-# require explicit permission from Secret Labs AB.
-#
 # Portions of this engine have been developed in cooperation with
 # CNRI.  Hewlett-Packard provided funding for 1.6 integration and
 # other compatibility work.
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index af6c6e1..dfe7c31 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -6,9 +6,6 @@
 #
 # Copyright (c) 1998-2000 by Secret Labs AB.  All rights reserved.
 #
-# This code can only be used for 1.6 alpha testing.  All other use
-# require explicit permission from Secret Labs AB.
-#
 # Portions of this engine have been developed in cooperation with
 # CNRI.  Hewlett-Packard provided funding for 1.6 integration and
 # other compatibility work.
@@ -20,21 +17,18 @@
 
 from sre_constants import *
 
-# FIXME: <fl> should be 65535, but the array module currently chokes
-# on unsigned integers larger than 32767 [fixed in 1.6b1?]
-MAXREPEAT = int(2L**(_sre.getcodesize()*8-1))-1
+# FIXME: should be 65535, but the arraymodule is still broken
+MAXREPEAT = 32767
 
 SPECIAL_CHARS = ".\\[{()*+?^$|"
 REPEAT_CHARS  = "*+?{"
 
-# FIXME: <fl> string in tuple tests may explode with if char is
-# unicode [fixed in 1.6b1?]
-DIGITS = tuple(string.digits)
+DIGITS = string.digits
 
-OCTDIGITS = tuple("01234567")
-HEXDIGITS = tuple("0123456789abcdefABCDEF")
+OCTDIGITS = "01234567"
+HEXDIGITS = "0123456789abcdefABCDEF"
 
-WHITESPACE = tuple(string.whitespace)
+WHITESPACE = string.whitespace
 
 ESCAPES = {
     "\\a": (LITERAL, chr(7)),
@@ -194,13 +188,13 @@
 	return code
     try:
 	if escape[1:2] == "x":
-	    while source.next in HEXDIGITS:
+	    while source.next and source.next in HEXDIGITS:
 		escape = escape + source.get()
 	    escape = escape[2:]
 	    # FIXME: support unicode characters!
 	    return LITERAL, chr(int(escape[-4:], 16) & 0xff)
 	elif str(escape[1:2]) in OCTDIGITS:
-	    while source.next in OCTDIGITS:
+	    while source.next and source.next in OCTDIGITS:
 		escape = escape + source.get()
 	    escape = escape[1:]
 	    # FIXME: support unicode characters!
@@ -221,7 +215,7 @@
 	return code
     try:
 	if escape[1:2] == "x":
-	    while source.next in HEXDIGITS:
+	    while source.next and source.next in HEXDIGITS:
 		escape = escape + source.get()
 	    escape = escape[2:]
 	    # FIXME: support unicode characters!
@@ -234,7 +228,7 @@
 			not _group(escape + source.next, state)):
 		        return GROUP, group
 		    escape = escape + source.get()
-		elif source.next in OCTDIGITS:
+		elif source.next and source.next in OCTDIGITS:
 		    escape = escape + source.get()
 		else:
 		    break
@@ -297,7 +291,7 @@
 
     while 1:
 
-	if str(source.next) in ("|", ")"):
+	if source.next in ("|", ")"):
 	    break # end of subpattern
 	this = source.get()
 	if this is None:
@@ -378,10 +372,10 @@
 	    elif this == "{":
 		min, max = 0, MAXREPEAT
 		lo = hi = ""
-		while str(source.next) in DIGITS:
+		while source.next and source.next in DIGITS:
 		    lo = lo + source.get()
 		if source.match(","):
-		    while str(source.next) in DIGITS:
+		    while source.next and source.next in DIGITS:
 			hi = hi + source.get()
 		else:
 		    hi = lo
@@ -571,30 +565,3 @@
 		raise error, "empty group"
 	    a(s)
     return match.string[:0].join(p)
-
-if __name__ == "__main__":
-    from pprint import pprint
-    from testpatterns import PATTERNS
-    a = b = c = 0
-    for pattern, flags in PATTERNS:
-	if flags:
-	    continue
-	print "-"*68
-	try:
-	    p = parse(pattern)
-	    print repr(pattern), "->"
-	    pprint(p.data)
-	    import sre_compile
-	    try:
-		code = sre_compile.compile(p)
-		c = c + 1
-	    except:
-		pass
-	    a = a + 1
-	except error, v:
-	    print "**", repr(pattern), v
-	b = b + 1
-    print "-"*68
-    print a, "of", b, "patterns successfully parsed"
-    print c, "of", b, "patterns successfully compiled"
-
diff --git a/Modules/_sre.c b/Modules/_sre.c
index cd28711..90fd5f4 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -3,7 +3,7 @@
  * Secret Labs' Regular Expression Engine
  * $Id$
  *
-n * simple regular expression matching engine
+ * regular expression matching engine
  *
  * partial history:
  * 99-10-24 fl	created (based on existing template matcher code)
@@ -22,20 +22,11 @@
  *
  * Copyright (c) 1997-2000 by Secret Labs AB.  All rights reserved.
  *
- * This code can only be used for 1.6 alpha testing.  All other use
- * require explicit permission from Secret Labs AB.
- *
  * Portions of this engine have been developed in cooperation with
  * CNRI.  Hewlett-Packard provided funding for 1.6 integration and
  * other compatibility work.
  */
 
-/*
- * FIXME: repeated groups don't work (they're usually come out empty)
- * FIXME: rename to 're'
- * FIXME: enable repeat_one optimization
- */   
-
 #ifndef SRE_RECURSIVE
 
 static char
