diff --git a/examples/wsgi/run_wsgi.py b/examples/wsgi/run_wsgi.py
index 6e86406..13d689b 100644
--- a/examples/wsgi/run_wsgi.py
+++ b/examples/wsgi/run_wsgi.py
@@ -1,14 +1,25 @@
 #!/usr/bin/python
 
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
 import cgi, re, os, posixpath, mimetypes
 from mako.lookup import TemplateLookup
 from mako import exceptions
 
 root = './'
 port = 8000
-error_style = 'html' # select 'text' for plaintext error reporting
 
-lookup = TemplateLookup(directories=[root + 'templates', root + 'htdocs'], filesystem_checks=True, module_directory='./modules')
+lookup = TemplateLookup(
+             directories=[root + 'templates', root + 'htdocs'],
+             filesystem_checks=True,
+             module_directory='./modules',
+             # even better would be to use 'charset' in start_response
+             output_encoding='ascii',
+             ending_errors='replace'
+         )
 
 def serve(environ, start_response):
     """serves requests using the WSGI callable interface."""
@@ -28,23 +39,25 @@
     if re.match(r'.*\.html$', uri):
         try:
             template = lookup.get_template(uri)
-            start_response("200 OK", [('Content-type','text/html')])
-            return [template.render(**d)]
         except exceptions.TopLevelLookupException:
             start_response("404 Not Found", [])
-            return ["Cant find template '%s'" % uri]
+            return [str.encode("Cant find template '%s'" % uri)]
+
+        start_response("200 OK", [('Content-type','text/html')])
+
+        try:
+            return [template.render(**d)]
         except:
-            if error_style == 'text':
-                start_response("200 OK", [('Content-type','text/plain')])
-                return [exceptions.text_error_template().render()]
-            else:
-                start_response("200 OK", [('Content-type','text/html')])
-                return [exceptions.html_error_template().render()]
+            return [exceptions.html_error_template().render()]
     else:
         u = re.sub(r'^\/+', '', uri)
         filename = os.path.join(root, u)
-        start_response("200 OK", [('Content-type',guess_type(uri))])
-        return [file(filename).read()]
+        if os.path.isfile(filename):
+            start_response("200 OK", [('Content-type',guess_type(uri))])
+            return [open(filename, 'rb').read()]
+        else:
+            start_response("404 Not Found", [])
+            return [str.encode("File not found: '%s'" % filename)]
  
 def getfield(f):
     """convert values from cgi.Field objects to plain values."""
@@ -54,9 +67,6 @@
         return f.value
 
 extensions_map = mimetypes.types_map.copy()
-extensions_map.update({
-'': 'text/html', # Default
-})
 
 def guess_type(path):
     """return a mimetype for the given path based on file extension."""
@@ -67,12 +77,10 @@
     if ext in extensions_map:
         return extensions_map[ext]
     else:
-        return extensions_map['']
+        return 'text/html'
  
 if __name__ == '__main__':
     import wsgiref.simple_server
     server = wsgiref.simple_server.make_server('', port, serve)
-    print "Server listening on port %d" % port
+    print("Server listening on port %d" % port)
     server.serve_forever()
-
-
