Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/Parser/ParseNode.h	(revision 7e4b44db4aee3e4db9e5c3f78521d2db85fd048b)
@@ -124,15 +124,15 @@
 
 	virtual void print( std::ostream &os, __attribute__((unused)) int indent = 0 ) const override {
-		os << expr.get() << std::endl;
+		os << expr << std::endl;
 	}
 	void printOneLine( __attribute__((unused)) std::ostream &os, __attribute__((unused)) int indent = 0 ) const {}
 
 	template<typename T>
-	bool isExpressionType() const {	return nullptr != dynamic_cast<T>(expr.get()); }
-
-	Expression * build() const { return const_cast<ExpressionNode *>(this)->expr.release(); }
+	bool isExpressionType() const {	return nullptr != dynamic_cast<T>(expr); }
+
+	Expression * build() const { return expr; }
   private:
 	bool extension = false;
-	std::unique_ptr<Expression> expr;
+	Expression* expr;
 }; // ExpressionNode
 
@@ -352,5 +352,5 @@
 
 	virtual StatementNode * clone() const final { assert( false ); return nullptr; }
-	Statement * build() const { return const_cast<StatementNode *>(this)->stmt.release(); }
+	Statement * build() const { return stmt; }
 
 	virtual StatementNode * add_label( const std::string * name, DeclarationNode * attr = nullptr ) {
@@ -364,8 +364,8 @@
 
 	virtual void print( std::ostream &os, __attribute__((unused)) int indent = 0 ) const override {
-		os << stmt.get() << std::endl;
+		os << stmt << std::endl;
 	}
   private:
-	std::unique_ptr<Statement> stmt;
+	Statement* stmt;
 }; // StatementNode
 
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 68f9c43ecf1873cbb5f06aee682704b56612ed16)
+++ src/Parser/StatementNode.cc	(revision 7e4b44db4aee3e4db9e5c3f78521d2db85fd048b)
@@ -16,5 +16,4 @@
 #include <cassert>                 // for assert, strict_dynamic_cast, assertf
 #include <list>                    // for list
-#include <memory>                  // for unique_ptr
 #include <string>                  // for string
 
@@ -50,5 +49,5 @@
 		agg = decl;
 	} // if
-	stmt.reset( new DeclStmt( maybeMoveBuild< Declaration >(agg) ) );
+	stmt = new DeclStmt{ maybeMoveBuild< Declaration >(agg) };
 } // StatementNode::StatementNode
 
@@ -58,5 +57,5 @@
 	for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) {
 		StatementNode *node = strict_dynamic_cast< StatementNode * >(curr);
-		assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
+		assert( dynamic_cast< CaseStmt * >(node->stmt) );
 		prev = curr;
 	} // for
@@ -66,5 +65,5 @@
 	buildMoveList( stmt, stmts );
 	// splice any new Statements to end of current Statements
-	CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get());
+	CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt);
 	caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
 	return this;
