# -*- coding: utf-8 -*-
 """Data interface functions for the mudpy engine."""
 
-# Copyright (c) 2004-2013 Jeremy Stanley <fungi@yuggoth.org>. Permission
+# Copyright (c) 2004-2014 Jeremy Stanley <fungi@yuggoth.org>. Permission
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
 import codecs
+import configparser
 import os
 import re
 import stat
 import sys
 
-# TODO: remove this check after the switch to py3k
-try:
-    import configparser
-except ImportError:
-    import ConfigParser as configparser
-
 import mudpy
 
 
 
 # -*- coding: utf-8 -*-
 """Miscellaneous functions for the mudpy engine."""
 
-# Copyright (c) 2004-2013 Jeremy Stanley <fungi@yuggoth.org>. Permission
+# Copyright (c) 2004-2014 Jeremy Stanley <fungi@yuggoth.org>. Permission
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
     def set(self, facet, value):
         """Set values."""
         if not self.has_facet(facet) or not self.get(facet) == value:
-            # TODO: remove this check after the switch to py3k
-            if repr(type(value)) == "<type 'unicode'>":
-                value = str(value)
             if not type(value) is str:
                 value = repr(value)
             self.origin.data.set(self.key, facet, value)
     escape = False
 
     # normalize any potentially composited unicode before we count it
-    # TODO: remove this check after the switch to py3k
-    try:
-        text = unicodedata.normalize("NFKC", text)
-    except TypeError:
-        text = unicodedata.normalize("NFKC", unicode(text))
+    text = unicodedata.normalize("NFKC", text)
 
     # iterate over each character from the begining of the text
     for each_character in text:
 
 # -*- coding: utf-8 -*-
 """Password hashing functions and constants for the mudpy engine."""
 
-# Copyright (c) 2004-2013 Jeremy Stanley <fungi@yuggoth.org>. Permission
+# Copyright (c) 2004-2014 Jeremy Stanley <fungi@yuggoth.org>. Permission
 # to use, copy, modify, and distribute this software is granted under
 # terms provided in the LICENSE file distributed with this software.
 
     # number of times
     for i in range(2 ** rounds):
         hashed = algorithms[algorithm](hashed.encode("utf-8")).digest()
-        # TODO: remove this check after the switch to py3k
-        try:
-            hashed = "".join(format(x, "02x") for x in bytes(hashed))
-        except ValueError:
-            hashed = "".join(format(ord(x), "02x") for x in bytes(hashed))
+        hashed = "".join(format(x, "02x") for x in bytes(hashed))
 
     # concatenate the output fields, coercing into text form as needed
     return "%s%s%s%s%s%s%s%s" % (