diff --git a/Parser/parser.c b/Parser/parser.c
index ff4ce16..83e5e6d 100644
--- a/Parser/parser.c
+++ b/Parser/parser.c
@@ -149,6 +149,7 @@
 			    strcmp(l->lb_str, s) != 0)
 				continue;
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
+#if 0
                         /* Leaving this in as an example */
 			if (!(ps->p_flags & CO_FUTURE_WITH_STATEMENT)) {
 				if (s[0] == 'w' && strcmp(s, "with") == 0)
@@ -157,6 +158,7 @@
 					break; /* not a keyword yet */
 			}
 #endif
+#endif
 			D(printf("It's a keyword\n"));
 			return n - i;
 		}
@@ -178,6 +180,7 @@
 }
 
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
+#if 0
 /* Leaving this in as an example */
 static void
 future_hack(parser_state *ps)
@@ -218,6 +221,7 @@
 		}
 	}
 }
+#endif
 #endif /* future keyword */
 
 int
@@ -278,11 +282,13 @@
 						 d->d_name,
 						 ps->p_stack.s_top->s_state));
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
+#if 0
 					if (d->d_name[0] == 'i' &&
 					    strcmp(d->d_name,
 						   "import_stmt") == 0)
 						future_hack(ps);
 #endif
+#endif
 					s_pop(&ps->p_stack);
 					if (s_empty(&ps->p_stack)) {
 						D(printf("  ACCEPT.\n"));
@@ -296,10 +302,12 @@
 		
 		if (s->s_accept) {
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
+#if 0
 			if (d->d_name[0] == 'i' &&
 			    strcmp(d->d_name, "import_stmt") == 0)
 				future_hack(ps);
 #endif
+#endif
 			/* Pop this dfa and try again */
 			s_pop(&ps->p_stack);
 			D(printf(" Pop ...\n"));
diff --git a/Parser/parsetok.c b/Parser/parsetok.c
index 4c3b506..1470327 100644
--- a/Parser/parsetok.c
+++ b/Parser/parsetok.c
@@ -100,6 +100,7 @@
 }
 
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
+#if 0
 static char with_msg[] =
 "%s:%d: Warning: 'with' will become a reserved keyword in Python 2.6\n";
 
@@ -114,6 +115,7 @@
 	PySys_WriteStderr(msg, filename, lineno);
 }
 #endif
+#endif
 
 /* Parse input coming from the given tokenizer structure.
    Return error code. */
@@ -133,8 +135,8 @@
 		return NULL;
 	}
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-	if (*flags & PyPARSE_WITH_IS_KEYWORD)
-		ps->p_flags |= CO_FUTURE_WITH_STATEMENT;
+	if (*flags & PyPARSE_BARRY_AS_BDFL)
+		ps->p_flags |= CO_FUTURE_BARRY_AS_BDFL;
 #endif
 
 	for (;;) {
@@ -177,26 +179,20 @@
 		str[len] = '\0';
 
 #ifdef PY_PARSER_REQUIRES_FUTURE_KEYWORD
-		/* This is only necessary to support the "as" warning, but
-		   we don't want to warn about "as" in import statements. */
-		if (type == NAME &&
-		    len == 6 && str[0] == 'i' && strcmp(str, "import") == 0)
-			handling_import = 1;
-
-		/* Warn about with as NAME */
-		if (type == NAME &&
-		    !(ps->p_flags & CO_FUTURE_WITH_STATEMENT)) {
-		    if (len == 4 && str[0] == 'w' && strcmp(str, "with") == 0)
-			warn(with_msg, err_ret->filename, tok->lineno);
-		    else if (!(handling_import || handling_with) &&
-		             len == 2 && str[0] == 'a' &&
-			     strcmp(str, "as") == 0)
-			warn(as_msg, err_ret->filename, tok->lineno);
+		if (type == NOTEQUAL) {
+			if (!(ps->p_flags & CO_FUTURE_BARRY_AS_BDFL) &&
+					strcmp(str, "!=")) {
+				err_ret->error = E_SYNTAX;
+				break;
+			}
+			else if ((ps->p_flags & CO_FUTURE_BARRY_AS_BDFL) &&
+					strcmp(str, "<>")) {
+				err_ret->text = "with Barry as BDFL, use '<>' "
+						"instead of '!='";
+				err_ret->error = E_SYNTAX;
+				break;
+			}
 		}
-		else if (type == NAME &&
-			 (ps->p_flags & CO_FUTURE_WITH_STATEMENT) &&
-			 len == 4 && str[0] == 'w' && strcmp(str, "with") == 0)
-			handling_with = 1;
 #endif
 		if (a >= tok->line_start)
 			col_offset = a - tok->line_start;
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index c4f447d..15e8185 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -1040,6 +1040,7 @@
 		break;
 	case '<':
 		switch (c2) {
+		case '>':	return NOTEQUAL;
 		case '=':	return LESSEQUAL;
 		case '<':	return LEFTSHIFT;
 		}
