diff --git a/CHANGES b/CHANGES
index 668e153..de2a311 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+0.1.1
+- AST parsing fixes: fixed TryExcept identifier parsing
+
 0.1.0
 
 Initial release.
diff --git a/lib/mako/ast.py b/lib/mako/ast.py
index e44e5a8..05f5426 100644
--- a/lib/mako/ast.py
+++ b/lib/mako/ast.py
@@ -64,6 +64,8 @@
                     if decl is not None:
                         (exception, ident) = [n.name for n in decl.nodes]
                         self.declared_identifiers.add(ident)
+                for n in node.getChildNodes():
+                    s.visit(n, *args)
             def visitName(s, node, *args):
                 if node.name not in __builtins__ and node.name not in self.declared_identifiers:
                     self.undeclared_identifiers.add(node.name)
diff --git a/test/ast.py b/test/ast.py
index 3059fdd..87c4600 100644
--- a/test/ast.py
+++ b/test/ast.py
@@ -67,6 +67,16 @@
         parsed = ast.PythonCode(code, 0, 0, None)
         assert parsed.undeclared_identifiers == util.Set(['y'])
         assert parsed.declared_identifiers == util.Set(['mydef', 'x'])
+    
+    def test_locate_identifiers_5(self):
+        code = """
+try:
+    print x
+except:
+    print y
+"""
+        parsed = ast.PythonCode(code, 0, 0, None)
+        assert parsed.undeclared_identifiers == util.Set(['x', 'y'])
         
     def test_no_global_imports(self):
         code = """
