diff --git a/Lib/compiler/misc.py b/Lib/compiler/misc.py
index 6d5eaa8..8d91770 100644
--- a/Lib/compiler/misc.py
+++ b/Lib/compiler/misc.py
@@ -1,9 +1,8 @@
-import types
 
 def flatten(tup):
     elts = []
     for elt in tup:
-        if type(elt) == types.TupleType:
+        if isinstance(elt, tuple):
             elts = elts + flatten(elt)
         else:
             elts.append(elt)
diff --git a/Lib/compiler/pyassem.py b/Lib/compiler/pyassem.py
index e1fb063..7b6cee6 100644
--- a/Lib/compiler/pyassem.py
+++ b/Lib/compiler/pyassem.py
@@ -3,7 +3,6 @@
 import dis
 import new
 import sys
-import types
 
 from compiler import misc
 from compiler.consts \
@@ -641,7 +640,7 @@
 
 def twobyte(val):
     """Convert an int argument into high and low bytes"""
-    assert type(val) == types.IntType
+    assert isinstance(val, int)
     return divmod(val, 256)
 
 class LineAddrTable:
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py
index 87558b2..4866e0e 100644
--- a/Lib/compiler/pycodegen.py
+++ b/Lib/compiler/pycodegen.py
@@ -3,7 +3,6 @@
 import marshal
 import struct
 import sys
-import types
 from cStringIO import StringIO
 
 from compiler import ast, parse, walk, syntax
@@ -1312,7 +1311,7 @@
     def generateArgUnpack(self, args):
         for i in range(len(args)):
             arg = args[i]
-            if type(arg) == types.TupleType:
+            if isinstance(arg, tuple):
                 self.emit('LOAD_FAST', '.%d' % (i * 2))
                 self.unpackSequence(arg)
 
@@ -1322,7 +1321,7 @@
         else:
             self.emit('UNPACK_TUPLE', len(tup))
         for elt in tup:
-            if type(elt) == types.TupleType:
+            if isinstance(elt, tuple):
                 self.unpackSequence(elt)
             else:
                 self._nameOp('STORE', elt)
@@ -1408,9 +1407,9 @@
     count = 0
     for i in range(len(arglist)):
         elt = arglist[i]
-        if type(elt) == types.StringType:
+        if isinstance(elt, str):
             args.append(elt)
-        elif type(elt) == types.TupleType:
+        elif isinstance(elt, tuple):
             args.append(TupleArg(i * 2, elt))
             extra.extend(misc.flatten(elt))
             count = count + 1
