Index: src/AST/Type.hpp
===================================================================
--- src/AST/Type.hpp	(revision 73edfe95c229e1e764ce51199e0532b33c1483cc)
+++ src/AST/Type.hpp	(revision c8293206313c3350568d818d48c8da940d369684)
@@ -37,6 +37,8 @@
 public:
 	CV::Qualifiers qualifiers;
-
-	Type( CV::Qualifiers q = {} ) : qualifiers(q) {}
+	std::vector<ptr<Attribute>> attributes;
+
+	Type( CV::Qualifiers q = {}, std::vector<ptr<Attribute>> && as = {} ) 
+	: qualifiers(q), attributes(std::move(as)) {}
 
 	bool is_const() const { return qualifiers.is_const; }
@@ -268,7 +270,10 @@
 	ForallList forall;
 
-	ParameterizedType( ForallList&& fs = {}, CV::Qualifiers q = {} )
-	: Type(q), forall(std::move(fs)) {}
-	ParameterizedType( CV::Qualifiers q ) : Type(q), forall() {}
+	ParameterizedType( ForallList&& fs = {}, CV::Qualifiers q = {}, 
+		std::vector<ptr<Attribute>> && as = {} )
+	: Type(q, std::move(as)), forall(std::move(fs)) {}
+	
+	ParameterizedType( CV::Qualifiers q, std::vector<ptr<Attribute>> && as = {} ) 
+	: Type(q, std::move(as)), forall() {}
 
 private:
@@ -311,5 +316,4 @@
 public:
 	std::vector<ptr<Expr>> params;
-	std::vector<ptr<Attribute>> attributes;
 	std::string name;
 	bool hoistType = false;
@@ -317,5 +321,5 @@
 	ReferenceToType( const std::string& n, CV::Qualifiers q = {},
 		std::vector<ptr<Attribute>> && as = {} )
-	: ParameterizedType(q), params(), attributes(std::move(as)), name(n) {}
+	: ParameterizedType(q, std::move(as)), params(), name(n) {}
 
 	/// Gets aggregate declaration this type refers to
