diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index a210c7f..e1a5bce 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -1836,7 +1836,7 @@
 }
 
 excepthandler_ty
-excepthandler(expr_ty type, expr_ty name, asdl_seq * body, int lineno, int
+excepthandler(expr_ty type, identifier name, asdl_seq * body, int lineno, int
               col_offset, PyArena *arena)
 {
         excepthandler_ty p;
@@ -2928,7 +2928,7 @@
         if (PyObject_SetAttrString(result, "type", value) == -1)
                 goto failed;
         Py_DECREF(value);
-        value = ast2obj_expr(o->name);
+        value = ast2obj_identifier(o->name);
         if (!value) goto failed;
         if (PyObject_SetAttrString(result, "name", value) == -1)
                 goto failed;
diff --git a/Python/ast.c b/Python/ast.c
index 5ccd6f5..41fb50e 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -2899,11 +2899,9 @@
     else if (NCH(exc) == 4) {
         asdl_seq *suite_seq;
         expr_ty expression;
-        expr_ty e = ast_for_expr(c, CHILD(exc, 3));
+        identifier e = NEW_IDENTIFIER(CHILD(exc, 3));
         if (!e)
             return NULL;
-        if (!set_context(e, Store, CHILD(exc, 3)))
-            return NULL;
         expression = ast_for_expr(c, CHILD(exc, 1));
         if (!expression)
             return NULL;
diff --git a/Python/compile.c b/Python/compile.c
index 481cc85..e3bdaf5 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1956,16 +1956,13 @@
 		ADDOP(c, POP_TOP);
 		if (handler->name) {
             basicblock *cleanup_end, *cleanup_body;
-            expr_context_ty orig_ctx;
-            
-            assert(handler->name->kind == Name_kind);
 
             cleanup_end = compiler_new_block(c);
             cleanup_body = compiler_new_block(c);
             if(!(cleanup_end || cleanup_body))
                 return 0;
 
-			VISIT(c, expr, handler->name);
+            compiler_nameop(c, handler->name, Store);
             ADDOP(c, POP_TOP);
 
             /*
@@ -1998,14 +1995,10 @@
 
             /* name = None */
             ADDOP_O(c, LOAD_CONST, Py_None, consts);
-            orig_ctx = handler->name->v.Name.ctx;
-            handler->name->v.Name.ctx = Store;
-            VISIT(c, expr, handler->name);
+            compiler_nameop(c, handler->name, Store);
 
-            /* del name */            
-            handler->name->v.Name.ctx = Del;
-            VISIT(c, expr, handler->name);
-            handler->name->v.Name.ctx = orig_ctx;
+            /* del name */
+            compiler_nameop(c, handler->name, Del);
 
 	        ADDOP(c, END_FINALLY);
 	        compiler_pop_fblock(c, FINALLY_END, cleanup_end);
diff --git a/Python/graminit.c b/Python/graminit.c
index 3f02240..0c4bfb5 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -1053,7 +1053,7 @@
 	{0, 2},
 };
 static arc arcs_46_3[1] = {
-	{22, 4},
+	{19, 4},
 };
 static arc arcs_46_4[1] = {
 	{0, 4},
diff --git a/Python/symtable.c b/Python/symtable.c
index 708e18c..d275cb9 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -1335,7 +1335,8 @@
 	if (eh->type)
 		VISIT(st, expr, eh->type);
 	if (eh->name)
-		VISIT(st, expr, eh->name);
+        if (!symtable_add_def(st, eh->name, DEF_LOCAL))
+			return 0;
 	VISIT_SEQ(st, stmt, eh->body);
 	return 1;
 }
