Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 8f31be6fe7732b7047100aa8031591434c22ee83)
+++ src/AST/Pass.impl.hpp	(revision e0069bd332ef5d4206eb128f91629bf8d19b2dcf)
@@ -53,76 +53,71 @@
 #endif
 
-namespace ast {
+namespace ast::__pass {
+	// Check if this is either a null pointer or a pointer to an empty container
+	template<typename T>
+	static inline bool empty( T * ptr ) {
+		return !ptr || ptr->empty();
+	}
+
+	template< typename core_t, typename node_t >
+	static inline node_t* mutate(const node_t *node) {
+		return std::is_base_of<PureVisitor, core_t>::value ? ::ast::shallowCopy(node) : ::ast::mutate(node);
+	}
+
+	//------------------------------
+	template<typename it_t, template <class...> class container_t>
+	static inline void take_all( it_t it, container_t<ast::ptr<ast::Decl>> * decls, bool * mutated = nullptr ) {
+		if ( empty( decls ) ) return;
+
+		std::transform(decls->begin(), decls->end(), it, [](const ast::Decl * decl) -> auto {
+				return new DeclStmt( decl->location, decl );
+			});
+		decls->clear();
+		if ( mutated ) *mutated = true;
+	}
+
+	template<typename it_t, template <class...> class container_t>
+	static inline void take_all( it_t it, container_t<ast::ptr<ast::Stmt>> * stmts, bool * mutated = nullptr ) {
+		if ( empty( stmts ) ) return;
+
+		std::move(stmts->begin(), stmts->end(), it);
+		stmts->clear();
+		if ( mutated ) *mutated = true;
+	}
+
+	//------------------------------
+	/// Check if should be skipped, different for pointers and containers
 	template<typename node_t>
-	node_t * shallowCopy( const node_t * node );
-
-	namespace __pass {
-		// Check if this is either a null pointer or a pointer to an empty container
-		template<typename T>
-		static inline bool empty( T * ptr ) {
-			return !ptr || ptr->empty();
-		}
-
-		template< typename core_t, typename node_t >
-		static inline node_t* mutate(const node_t *node) {
-			return std::is_base_of<PureVisitor, core_t>::value ? ::ast::shallowCopy(node) : ::ast::mutate(node);
-		}
-
-		//------------------------------
-		template<typename it_t, template <class...> class container_t>
-		static inline void take_all( it_t it, container_t<ast::ptr<ast::Decl>> * decls, bool * mutated = nullptr ) {
-			if ( empty( decls ) ) return;
-
-			std::transform(decls->begin(), decls->end(), it, [](const ast::Decl * decl) -> auto {
-					return new DeclStmt( decl->location, decl );
-				});
-			decls->clear();
-			if ( mutated ) *mutated = true;
-		}
-
-		template<typename it_t, template <class...> class container_t>
-		static inline void take_all( it_t it, container_t<ast::ptr<ast::Stmt>> * stmts, bool * mutated = nullptr ) {
-			if ( empty( stmts ) ) return;
-
-			std::move(stmts->begin(), stmts->end(), it);
-			stmts->clear();
-			if ( mutated ) *mutated = true;
-		}
-
-		//------------------------------
-		/// Check if should be skipped, different for pointers and containers
-		template<typename node_t>
-		bool skip( const ast::ptr<node_t> & val ) {
-			return !val;
-		}
-
-		template< template <class...> class container_t, typename node_t >
-		bool skip( const container_t<ast::ptr< node_t >> & val ) {
-			return val.empty();
-		}
-
-		//------------------------------
-		/// Get the value to visit, different for pointers and containers
-		template<typename node_t>
-		auto get( const ast::ptr<node_t> & val, int ) -> decltype(val.get()) {
-			return val.get();
-		}
-
-		template<typename node_t>
-		const node_t & get( const node_t & val, long ) {
-			return val;
-		}
-
-		//------------------------------
-		/// Check if value was mutated, different for pointers and containers
-		template<typename lhs_t, typename rhs_t>
-		bool differs( const lhs_t * old_val, const rhs_t * new_val ) {
-			return old_val != new_val;
-		}
-
-		template< template <class...> class container_t, typename node_t >
-		bool differs( const container_t<ast::ptr< node_t >> &, const container_t<ast::ptr< node_t >> & new_val ) {
-			return !new_val.empty();
-		}
+	bool skip( const ast::ptr<node_t> & val ) {
+		return !val;
+	}
+
+	template< template <class...> class container_t, typename node_t >
+	bool skip( const container_t<ast::ptr< node_t >> & val ) {
+		return val.empty();
+	}
+
+	//------------------------------
+	/// Get the value to visit, different for pointers and containers
+	template<typename node_t>
+	auto get( const ast::ptr<node_t> & val, int ) -> decltype(val.get()) {
+		return val.get();
+	}
+
+	template<typename node_t>
+	const node_t & get( const node_t & val, long ) {
+		return val;
+	}
+
+	//------------------------------
+	/// Check if value was mutated, different for pointers and containers
+	template<typename lhs_t, typename rhs_t>
+	bool differs( const lhs_t * old_val, const rhs_t * new_val ) {
+		return old_val != new_val;
+	}
+
+	template< template <class...> class container_t, typename node_t >
+	bool differs( const container_t<ast::ptr< node_t >> &, const container_t<ast::ptr< node_t >> & new_val ) {
+		return !new_val.empty();
 	}
 }
@@ -1920,5 +1915,5 @@
 	VISIT_START( node );
 
-	__pass::symtab::addStruct( core, 0, node->name );
+	__pass::symtab::addStructId( core, 0, node->name );
 
 	if ( __visit_children() ) {
@@ -1936,5 +1931,5 @@
 	VISIT_START( node );
 
-	__pass::symtab::addUnion( core, 0, node->name );
+	__pass::symtab::addUnionId( core, 0, node->name );
 
 	if ( __visit_children() ) {
Index: src/AST/Pass.proto.hpp
===================================================================
--- src/AST/Pass.proto.hpp	(revision 8f31be6fe7732b7047100aa8031591434c22ee83)
+++ src/AST/Pass.proto.hpp	(revision e0069bd332ef5d4206eb128f91629bf8d19b2dcf)
@@ -488,22 +488,22 @@
 
 	template<typename core_t>
-	static inline auto addStruct( core_t & core, int, const std::string & str ) -> decltype( core.symtab.addStruct( str ), void() ) {
+	static inline auto addStructId( core_t & core, int, const std::string & str ) -> decltype( core.symtab.addStructId( str ), void() ) {
 		if ( ! core.symtab.lookupStruct( str ) ) {
-			core.symtab.addStruct( str );
-		}
-	}
-
-	template<typename core_t>
-	static inline void addStruct( core_t &, long, const std::string & ) {}
-
-	template<typename core_t>
-	static inline auto addUnion( core_t & core, int, const std::string & str ) -> decltype( core.symtab.addUnion( str ), void() ) {
+			core.symtab.addStructId( str );
+		}
+	}
+
+	template<typename core_t>
+	static inline void addStructId( core_t &, long, const std::string & ) {}
+
+	template<typename core_t>
+	static inline auto addUnionId( core_t & core, int, const std::string & str ) -> decltype( core.symtab.addUnionId( str ), void() ) {
 		if ( ! core.symtab.lookupUnion( str ) ) {
-			core.symtab.addUnion( str );
-		}
-	}
-
-	template<typename core_t>
-	static inline void addUnion( core_t &, long, const std::string & ) {}
+			core.symtab.addUnionId( str );
+		}
+	}
+
+	template<typename core_t>
+	static inline void addUnionId( core_t &, long, const std::string & ) {}
 
 	#undef SYMTAB_FUNC1
Index: src/AST/SymbolTable.cpp
===================================================================
--- src/AST/SymbolTable.cpp	(revision 8f31be6fe7732b7047100aa8031591434c22ee83)
+++ src/AST/SymbolTable.cpp	(revision e0069bd332ef5d4206eb128f91629bf8d19b2dcf)
@@ -323,5 +323,5 @@
 }
 
-void SymbolTable::addStruct( const std::string &id ) {
+void SymbolTable::addStructId( const std::string &id ) {
 	addStruct( new StructDecl( CodeLocation(), id ) );
 }
@@ -365,5 +365,5 @@
 }
 
-void SymbolTable::addUnion( const std::string &id ) {
+void SymbolTable::addUnionId( const std::string &id ) {
 	addUnion( new UnionDecl( CodeLocation(), id ) );
 }
Index: src/AST/SymbolTable.hpp
===================================================================
--- src/AST/SymbolTable.hpp	(revision 8f31be6fe7732b7047100aa8031591434c22ee83)
+++ src/AST/SymbolTable.hpp	(revision e0069bd332ef5d4206eb128f91629bf8d19b2dcf)
@@ -150,5 +150,5 @@
 	void addType( const NamedTypeDecl * decl );
 	/// Adds a struct declaration to the symbol table by name
-	void addStruct( const std::string & id );
+	void addStructId( const std::string & id );
 	/// Adds a struct declaration to the symbol table
 	void addStruct( const StructDecl * decl );
@@ -156,5 +156,5 @@
 	void addEnum( const EnumDecl * decl );
 	/// Adds a union declaration to the symbol table by name
-	void addUnion( const std::string & id );
+	void addUnionId( const std::string & id );
 	/// Adds a union declaration to the symbol table
 	void addUnion( const UnionDecl * decl );
