Index: src/Concurrency/WaitforNew.cpp
===================================================================
--- src/Concurrency/WaitforNew.cpp	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/Concurrency/WaitforNew.cpp	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -101,5 +101,5 @@
 namespace {
 
-class GenerateWaitForCore :
+class GenerateWaitForCore final :
 		public ast::WithSymbolTable, public ast::WithConstTranslationUnit {
 	const ast::FunctionDecl * decl_waitfor    = nullptr;
Index: src/ControlStruct/ExceptTranslateNew.cpp
===================================================================
--- src/ControlStruct/ExceptTranslateNew.cpp	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/ControlStruct/ExceptTranslateNew.cpp	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -32,5 +32,5 @@
 	}
 
-class TranslateThrowsCore : public ast::WithGuards {
+class TranslateThrowsCore final : public ast::WithGuards {
 	const ast::ObjectDecl * terminateHandlerExcept;
 	enum Context { NoHandler, TerHandler, ResHandler } currentContext;
@@ -136,5 +136,5 @@
 
 
-class TryMutatorCore {
+class TryMutatorCore final {
 	// The built in types used in translation.
 	const ast::StructDecl * except_decl;
Index: src/GenPoly/InstantiateGenericNew.cpp
===================================================================
--- src/GenPoly/InstantiateGenericNew.cpp	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/GenPoly/InstantiateGenericNew.cpp	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -85,5 +85,5 @@
 
 /// Maps a key and a TypeList to a valuue. Also supports scoping.
-class InstantiationMap {
+class InstantiationMap final {
 	/// Wraps value for a specific (AggregateDecl, TypeList) combination.
 	using Instantiation = std::pair<TypeList, ast::ptr<ast::AggregateDecl>>;
Index: src/GenPoly/SpecializeNew.cpp
===================================================================
--- src/GenPoly/SpecializeNew.cpp	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/GenPoly/SpecializeNew.cpp	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -240,21 +240,19 @@
 }
 
-namespace {
-	struct TypeInstFixer : public ast::WithShortCircuiting {
-		std::map<const ast::TypeDecl *, std::pair<int, int>> typeMap;
-
-		void previsit(const ast::TypeDecl *) { visit_children = false; }
-		const ast::TypeInstType * postvisit(const ast::TypeInstType * typeInst) {
-			if (typeMap.count(typeInst->base)) {
-				ast::TypeInstType * newInst = mutate(typeInst);
-				auto const & pair = typeMap[typeInst->base];
-				newInst->expr_id = pair.first;
-				newInst->formal_usage = pair.second;
-				return newInst;
-			}
-			return typeInst;
-		}
-	};
-}
+struct TypeInstFixer final : public ast::WithShortCircuiting {
+	std::map<const ast::TypeDecl *, std::pair<int, int>> typeMap;
+
+	void previsit(const ast::TypeDecl *) { visit_children = false; }
+	const ast::TypeInstType * postvisit(const ast::TypeInstType * typeInst) {
+		if (typeMap.count(typeInst->base)) {
+			ast::TypeInstType * newInst = mutate(typeInst);
+			auto const & pair = typeMap[typeInst->base];
+			newInst->expr_id = pair.first;
+			newInst->formal_usage = pair.second;
+			return newInst;
+		}
+		return typeInst;
+	}
+};
 
 const ast::Expr * SpecializeCore::createThunkFunction(
Index: src/Tuples/TupleExpansionNew.cpp
===================================================================
--- src/Tuples/TupleExpansionNew.cpp	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/Tuples/TupleExpansionNew.cpp	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -101,5 +101,5 @@
 
 /// Replaces Tuple Assign & Index Expressions, and Tuple Types.
-struct TupleMainExpander :
+struct TupleMainExpander final :
 		public ast::WithGuards,
 		public ast::WithVisitorRef<TupleMainExpander>,
@@ -254,5 +254,5 @@
 }
 
-struct TupleExprExpander {
+struct TupleExprExpander final {
 	ast::Expr const * postvisit( ast::TupleExpr const * expr ) {
 		return replaceTupleExpr( expr->location,
Index: src/Virtual/ExpandCasts.cc
===================================================================
--- src/Virtual/ExpandCasts.cc	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/Virtual/ExpandCasts.cc	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -317,5 +317,5 @@
 };
 
-struct ExpandCastsCore {
+struct ExpandCastsCore final {
 	void previsit( ast::FunctionDecl const * decl );
 	void previsit( ast::StructDecl const * decl );
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 01865fb2bd5249a71fe41e9769e5bb5833723bc2)
+++ src/main.cc	(revision 25793dac197117f7b67da5a2775cb26fd04cf354)
@@ -623,5 +623,5 @@
 
 
-static const char optstring[] = ":c:ghlLmNnpdOAP:S:twW:D:";
+static const char optstring[] = ":c:ghlLmNnpdP:S:twW:D:";
 
 enum { PreludeDir = 128 };
@@ -637,6 +637,4 @@
 	{ "prototypes", no_argument, nullptr, 'p' },
 	{ "deterministic-out", no_argument, nullptr, 'd' },
-	{ "old-ast", no_argument, nullptr, 'O'},
-	{ "new-ast", no_argument, nullptr, 'A'},
 	{ "print", required_argument, nullptr, 'P' },
 	{ "prelude-dir", required_argument, nullptr, PreludeDir },
@@ -660,6 +658,4 @@
 	"do not generate prelude prototypes => prelude not printed", // -p
 	"only print deterministic output",                  // -d
-	"Use the old-ast",									// -O
-	"Use the new-ast",									// -A
 	"print",											// -P
 	"<directory> prelude directory for debug/nodebug",	// no flag
@@ -770,10 +766,4 @@
 			deterministic_output = true;
 			break;
-		  case 'O':                                     // don't print non-deterministic output
-			useNewAST = false;
-			break;
-		  case 'A':                                     // don't print non-deterministic output
-			useNewAST = true;
-			break;
 		  case 'P':										// print options
 			for ( int i = 0;; i += 1 ) {
