Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
diff --git a/Demo/scripts/unbirthday.py b/Demo/scripts/unbirthday.py
index 94ad448..5c39092 100755
--- a/Demo/scripts/unbirthday.py
+++ b/Demo/scripts/unbirthday.py
@@ -21,69 +21,70 @@
     if sys.argv[1:]:
         year = int(sys.argv[1])
     else:
-        year = int(raw_input('In which year were you born? '))
+        year = int(input('In which year were you born? '))
     if 0<=year<100:
-        print "I'll assume that by", year,
+        print("I'll assume that by", year, end=' ')
         year = year + 1900
-        print 'you mean', year, 'and not the early Christian era'
+        print('you mean', year, 'and not the early Christian era')
     elif not (1850<=year<=2002):
-        print "It's hard to believe you were born in", year
+        print("It's hard to believe you were born in", year)
         return
     #
     if sys.argv[2:]:
         month = int(sys.argv[2])
     else:
-        month = int(raw_input('And in which month? (1-12) '))
+        month = int(input('And in which month? (1-12) '))
     if not (1<=month<=12):
-        print 'There is no month numbered', month
+        print('There is no month numbered', month)
         return
     #
     if sys.argv[3:]:
         day = int(sys.argv[3])
     else:
-        day = int(raw_input('And on what day of that month? (1-31) '))
+        day = int(input('And on what day of that month? (1-31) '))
     if month == 2 and calendar.isleap(year):
         maxday = 29
     else:
         maxday = calendar.mdays[month]
     if not (1<=day<=maxday):
-        print 'There are no', day, 'days in that month!'
+        print('There are no', day, 'days in that month!')
         return
     #
     bdaytuple = (year, month, day)
     bdaydate = mkdate(bdaytuple)
-    print 'You were born on', format(bdaytuple)
+    print('You were born on', format(bdaytuple))
     #
     todaytuple = time.localtime()[:3]
     todaydate = mkdate(todaytuple)
-    print 'Today is', format(todaytuple)
+    print('Today is', format(todaytuple))
     #
     if bdaytuple > todaytuple:
-        print 'You are a time traveler.  Go back to the future!'
+        print('You are a time traveler.  Go back to the future!')
         return
     #
     if bdaytuple == todaytuple:
-        print 'You were born today.  Have a nice life!'
+        print('You were born today.  Have a nice life!')
         return
     #
     days = todaydate - bdaydate
-    print 'You have lived', days, 'days'
+    print('You have lived', days, 'days')
     #
     age = 0
     for y in range(year, todaytuple[0] + 1):
         if bdaytuple < (y, month, day) <= todaytuple:
             age = age + 1
     #
-    print 'You are', age, 'years old'
+    print('You are', age, 'years old')
     #
     if todaytuple[1:] == bdaytuple[1:]:
-        print 'Congratulations!  Today is your', nth(age), 'birthday'
-        print 'Yesterday was your',
+        print('Congratulations!  Today is your', nth(age), 'birthday')
+        print('Yesterday was your', end=' ')
     else:
-        print 'Today is your',
-    print nth(days - age), 'unbirthday'
+        print('Today is your', end=' ')
+    print(nth(days - age), 'unbirthday')
 
-def format((year, month, day)):
+def format(xxx_todo_changeme):
+    (year, month, day) = xxx_todo_changeme
     return '%d %s %d' % (day, calendar.month_name[month], year)
 
 def nth(n):
@@ -92,10 +93,11 @@
     if n == 3: return '3rd'
     return '%dth' % n
 
-def mkdate((year, month, day)):
+def mkdate(xxx_todo_changeme1):
     # Januari 1st, in 0 A.D. is arbitrarily defined to be day 1,
     # even though that day never actually existed and the calendar
     # was different then...
+    (year, month, day) = xxx_todo_changeme1
     days = year*365                 # years, roughly
     days = days + (year+3)/4        # plus leap years, roughly
     days = days - (year+99)/100     # minus non-leap years every century