Index: src/SymTab/Mangler.cc
===================================================================
--- src/SymTab/Mangler.cc	(revision 052cd7138ff5b8149b63ee8fba41fa31770761c4)
+++ src/SymTab/Mangler.cc	(revision d76c588058daa6269114595a571223a110ced0ab)
@@ -390,4 +390,12 @@
 } // namespace SymTab
 
+namespace Mangle {
+	std::string mangle( const ast::Node * decl, Mangle::Mode mode ) {
+		#warning unimplemented
+		assert( decl && mode.val && false );
+		return "";
+	}
+} // namespace Mangle
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/SymTab/Mangler.h
===================================================================
--- src/SymTab/Mangler.h	(revision 052cd7138ff5b8149b63ee8fba41fa31770761c4)
+++ src/SymTab/Mangler.h	(revision d76c588058daa6269114595a571223a110ced0ab)
@@ -21,4 +21,6 @@
 #include <utility>            // for pair
 
+#include "AST/Bitfield.hpp"
+#include "AST/Fwd.hpp"
 #include "SynTree/SynTree.h"  // for Types
 #include "SynTree/Visitor.h"  // for Visitor, maybeAccept
@@ -75,4 +77,36 @@
 } // SymTab
 
+namespace Mangle {
+	/// Bitflags for mangle modes
+	enum {
+		NoOverrideable  = 1 << 0,
+		Type            = 1 << 1,
+		NoGenericParams = 1 << 2
+	};
+
+	/// Bitflag type for mangler modes
+	struct mangle_flags {
+		union {
+			unsigned int val;
+			struct {
+				bool no_overrideable   : 1;
+				bool type              : 1;
+				bool no_generic_params : 1;
+			};
+		};
+
+		constexpr mangle_flags( unsigned int val ) : val(val) {}
+	};
+
+	using Mode = bitfield<mangle_flags>;
+
+	/// Mangle declaration name
+	std::string mangle( const ast::Node * decl, Mode mode = {} );
+
+	namespace Encoding {
+		using namespace SymTab::Mangler::Encoding;
+	};
+}
+
 extern "C" {
 	char * cforall_demangle(const char *, int);
