diff --git a/alib2std/src/extensions/type_traits.hpp b/alib2std/src/extensions/type_traits.hpp
index 73c3060610ebd718b2917273e1c6cbc376c12d9c..09755ae36ce82db1cc5f5bafef62d2ee3ec0b2f1 100644
--- a/alib2std/src/extensions/type_traits.hpp
+++ b/alib2std/src/extensions/type_traits.hpp
@@ -45,33 +45,6 @@ namespace std {
 		typedef typename get_type_pack_element < N - 1, Ts ... >::type type;
 	};
 
-	template<typename T>
-	bool is_same_type(const char* name) {
-		int status;
-
-		char namespaceId[100];
-		char classId[100];
-		char* ret = abi::__cxa_demangle(typeid(T).name(), 0, 0, &status);
-		sscanf(ret, "%[a-zA-Z]::%[a-zA-Z]", namespaceId, classId);
-		free( ret );
-
-		if(strcmp(classId, name) == 0) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	template <class T>
-	char* type_name() {
-		int status;
-
-		return abi::__cxa_demangle(typeid(T).name(), 0, 0, &status);
-	}
-
-	char* type_name(const std::type_info& type);
-	char* type_name(const std::type_index& type);
-
 } /* namespace std */
 
 #endif // TYPE_TRAITS_HPP_
diff --git a/alib2std/src/extensions/type_traits.cpp b/alib2std/src/extensions/typeinfo.cpp
similarity index 93%
rename from alib2std/src/extensions/type_traits.cpp
rename to alib2std/src/extensions/typeinfo.cpp
index 1d30d3ae2ea3829d581082662043bb184de47c64..d14ebcc03de72ef4b1a97ddf7caf0a73481fe528 100644
--- a/alib2std/src/extensions/type_traits.cpp
+++ b/alib2std/src/extensions/typeinfo.cpp
@@ -5,7 +5,7 @@
  * Author: Jan Travnicek
  */
 
-#include "../type_traits"
+#include "../typeinfo"
 
 namespace std {
 
diff --git a/alib2std/src/extensions/typeinfo.hpp b/alib2std/src/extensions/typeinfo.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..25371b7bb9b5d1ee04bd138aca5a55e9bfb40035
--- /dev/null
+++ b/alib2std/src/extensions/typeinfo.hpp
@@ -0,0 +1,38 @@
+/*
+ * typeindex.hpp
+ *
+ * Created on: Apr 1, 2013
+ * Author: Jan Travnicek
+ */
+
+#ifndef TYPEINFO_H_
+#define TYPEINFO_H_
+
+namespace std {
+
+	char* type_name(const std::type_info& type);
+	char* type_name(const std::type_index& type);
+
+	template <class T>
+	char* type_name() {
+		return type_name(typeid(T));
+	}
+
+	template<typename T>
+	bool is_same_type(const char* name) {
+		char namespaceId[100];
+		char classId[100];
+		char* ret = type_name<T>();
+		sscanf(ret, "%[a-zA-Z]::%[a-zA-Z]", namespaceId, classId);
+		free( ret );
+
+		if(strcmp(classId, name) == 0) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+}
+
+#endif // ifndef TYPEINFO_H_
diff --git a/alib2std/src/type_traits b/alib2std/src/type_traits
index 1fcebfe8698edd502d5f8e75bb594ae4c88caeb5..c612cf162b8a0bbe1677058910d5f05597147a9c 100644
--- a/alib2std/src/type_traits
+++ b/alib2std/src/type_traits
@@ -2,11 +2,6 @@
 #define __TYPE_TRAITS_HEADER_WRAPPER_
 
 #include <bits/../type_traits>
-#include <cxxabi.h>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <typeindex>
 #include "extensions/type_traits.hpp"
 
 #endif /* __TYPE_TRAITS_HEADER_WRAPPER_ */
diff --git a/alib2std/src/typeinfo b/alib2std/src/typeinfo
new file mode 100644
index 0000000000000000000000000000000000000000..7885373e3598844d0f6acc13005ed3e26f96d818
--- /dev/null
+++ b/alib2std/src/typeinfo
@@ -0,0 +1,12 @@
+#ifndef __TYPEINFO_HEADER_WRAPPER_
+#define __TYPEINFO_HEADER_WRAPPER_
+
+#include <bits/../typeinfo>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cxxabi.h>
+#include "typeindex"
+#include "extensions/typeinfo.hpp"
+
+#endif /* __TYPEINFO_HEADER_WRAPPER_ */