Index: driver/Makefile.am
===================================================================
--- driver/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ driver/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -19,5 +19,5 @@
 
 # applies to both programs
-AM_CXXFLAGS = @HOST_FLAGS@ -Wall -O2 -g -std=c++14 -I${abs_top_srcdir}/src -I${abs_top_srcdir}/src/include
+AM_CXXFLAGS = @HOST_FLAGS@ -Wall -Wextra -Werror=return-type -O2 -g -std=c++14 -I${abs_top_srcdir}/src -I${abs_top_srcdir}/src/include
 
 # don't install cfa directly
Index: libcfa/prelude/Makefile.am
===================================================================
--- libcfa/prelude/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ libcfa/prelude/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -26,5 +26,5 @@
 
 CC = @LOCAL_CFACC@
-AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CFLAGS = -g -Wall -Werror=return-type -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@
 AM_CFAFLAGS = @CONFIG_CFAFLAGS@
 
Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ libcfa/src/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -33,6 +33,6 @@
 # The built sources must not depend on the installed inst_headers_src
 AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr -I$(srcdir)/concurrency $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
-AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
-AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CFLAGS = -g -Wall -Werror=return-type -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
+AM_CCASFLAGS = -g -Wall -Werror=return-type -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
 CFACC = @CFACC@
 
Index: libcfa/src/concurrency/io/setup.cfa
===================================================================
--- libcfa/src/concurrency/io/setup.cfa	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ libcfa/src/concurrency/io/setup.cfa	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -32,5 +32,5 @@
 
 	void __cfa_io_start( processor * proc ) {}
-	bool __cfa_io_flush( processor * proc, int ) {}
+	bool __cfa_io_flush( processor * proc, int ) { return false; }
 	void __cfa_io_stop ( processor * proc ) {}
 
Index: longrun_tests/Makefile.am
===================================================================
--- longrun_tests/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ longrun_tests/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -36,4 +36,6 @@
 	-g \
 	-Wall \
+	-Wextra \
+	-Werror=return-type
 	-Wno-unused-function \
 	-quiet \
Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ src/AST/Pass.hpp	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -265,17 +265,4 @@
 	result1<ast::Stmt> call_accept_as_compound(const ast::Stmt *);
 
-	template<typename it_t, template <class...> class container_t>
-		static inline void take_all_delta( it_t it, container_t<ast::ptr<ast::Decl>> * decls, bool * mutated = nullptr ) {
-			if(empty(decls)) return;
-
-			std::transform(decls->begin(), decls->end(), it, [](ast::ptr<ast::Decl>&& decl) -> auto {
-					auto loc = decl->location;
-					auto stmt = new DeclStmt( loc, decl.release() );
-					return { {stmt}, -1, false };
-				});
-			decls->clear();
-			if(mutated) *mutated = true;
-		}
-
 	// Container of statements
 	template< template <class...> class container_t >
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ src/AST/Pass.impl.hpp	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -160,5 +160,5 @@
 
 	template< typename core_t >
-	ast::Pass< core_t >::result1<ast::Expr> ast::Pass< core_t >::call_accept( const ast::Expr * expr ) {
+	typename ast::Pass< core_t >::template result1<ast::Expr> ast::Pass< core_t >::call_accept( const ast::Expr * expr ) {
 		__pedantic_pass_assert( __visit_children() );
 		__pedantic_pass_assert( expr );
@@ -174,5 +174,5 @@
 
 	template< typename core_t >
-	ast::Pass< core_t >::result1<ast::Stmt> ast::Pass< core_t >::call_accept( const ast::Stmt * stmt ) {
+	typename ast::Pass< core_t >::template result1<ast::Stmt> ast::Pass< core_t >::call_accept( const ast::Stmt * stmt ) {
 		__pedantic_pass_assert( __visit_children() );
 		__pedantic_pass_assert( stmt );
@@ -183,5 +183,5 @@
 
 	template< typename core_t >
-	ast::Pass< core_t >::result1<ast::Stmt> ast::Pass< core_t >::call_accept_as_compound( const ast::Stmt * stmt ) {
+	typename ast::Pass< core_t >::template result1<ast::Stmt> ast::Pass< core_t >::call_accept_as_compound( const ast::Stmt * stmt ) {
 		__pedantic_pass_assert( __visit_children() );
 		__pedantic_pass_assert( stmt );
@@ -258,5 +258,5 @@
 	template< typename core_t >
 	template< template <class...> class container_t >
-	ast::Pass< core_t >::resultNstmt<container_t> ast::Pass< core_t >::call_accept( const container_t< ptr<Stmt> > & statements ) {
+	typename ast::Pass< core_t >::template resultNstmt<container_t> ast::Pass< core_t >::call_accept( const container_t< ptr<Stmt> > & statements ) {
 		__pedantic_pass_assert( __visit_children() );
 		if( statements.empty() ) return {};
@@ -346,5 +346,5 @@
 	template< typename core_t >
 	template< template <class...> class container_t, typename node_t >
-	ast::Pass< core_t >::resultN<container_t, node_t> ast::Pass< core_t >::call_accept( const container_t< ast::ptr<node_t> > & container ) {
+	typename ast::Pass< core_t >::template resultN<container_t, node_t> ast::Pass< core_t >::call_accept( const container_t< ast::ptr<node_t> > & container ) {
 		__pedantic_pass_assert( __visit_children() );
 		if( container.empty() ) return {};
Index: src/Common/CodeLocation.h
===================================================================
--- src/Common/CodeLocation.h	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ src/Common/CodeLocation.h	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -26,4 +26,5 @@
 	CodeLocation() = default;
 
+
 	/// Create a new CodeLocation with the given values.
 	CodeLocation( const char* filename, int lineno )
@@ -33,4 +34,7 @@
 
 	CodeLocation( const CodeLocation& rhs ) = default;
+	CodeLocation( CodeLocation&& rhs ) = default;
+	CodeLocation& operator=( const CodeLocation & ) = default;
+	CodeLocation& operator=( CodeLocation && ) = default;
 
 	bool isSet () const {
Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ src/ControlStruct/MLEMutator.cc	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -66,5 +66,5 @@
 
 	// break labels have to come after the statement they break out of, so mutate a statement, then if they inform us
-	// through the breakLabel field tha they need a place to jump to on a break statement, add the break label to the
+	// through the breakLabel field that they need a place to jump to on a break statement, add the break label to the
 	// body of statements
 	void MultiLevelExitMutator::fixBlock( std::list< Statement * > &kids, bool caseClause ) {
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ src/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -59,5 +59,5 @@
 
 $(srcdir)/AST/Type.hpp : BasicTypes-gen.cc
-	${AM_V_GEN}${CXXCOMPILE} $< -o BasicTypes-gen -Wall -Wextra
+	${AM_V_GEN}${CXXCOMPILE} $< -o BasicTypes-gen -Wall -Wextra -Werror=return-type
 	@./BasicTypes-gen
 	@rm BasicTypes-gen
@@ -71,5 +71,5 @@
 EXTRA_DIST = include/cassert include/optional BasicTypes-gen.cc
 
-AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O3 -g -std=c++14 $(TCMALLOCFLAG)
+AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -Werror=return-type -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O3 -g -std=c++14 $(TCMALLOCFLAG)
 AM_LDFLAGS  = @HOST_FLAGS@ -Xlinker -export-dynamic
 ARFLAGS     = cr
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ tests/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -43,4 +43,5 @@
 	-g \
 	-Wall \
+	-Werror=return-type \
 	-Wno-unused-function \
 	-Wno-psabi \
Index: tests/unified_locking/mutex_test.hfa
===================================================================
--- tests/unified_locking/mutex_test.hfa	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ tests/unified_locking/mutex_test.hfa	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -54,5 +54,5 @@
 }
 
-int test() {
+void test() {
 	uint32_t sum = -32;
 	mo.sum = -32;
Index: tools/Makefile.am
===================================================================
--- tools/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ tools/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -19,5 +19,5 @@
 
 noinst_PROGRAMS = busy catchsig repeat watchdog
-AM_CFLAGS = -Wall -Wextra -O2 -g
+AM_CFLAGS = -Wall -Wextra -Werror=return-type -O2 -g
 busy_LDFLAGS     = -pthread
 
Index: tools/prettyprinter/Makefile.am
===================================================================
--- tools/prettyprinter/Makefile.am	(revision 12b5e94a9df5bfc0037b0fe7eb823f658a9b0d9d)
+++ tools/prettyprinter/Makefile.am	(revision 454b4e01b75e00e1a232a34fc6777a3e01b733c2)
@@ -32,5 +32,5 @@
 nodist_pretty_SOURCES = ${SRC}
 pretty_LDADD = ${LEXLIB} -ldl			# yywrap
-pretty_CXXFLAGS = -Wno-deprecated -Wall -DYY_NO_INPUT -O2 -g -std=c++14
+pretty_CXXFLAGS = -Wno-deprecated -Wall -Wextra -Werror=return-type -DYY_NO_INPUT -O2 -g -std=c++14
 
 MOSTLYCLEANFILES = parser.output
