diff --git a/alib2std/src/extensions/pointer.hpp b/alib2std/src/extensions/pointer.hpp
deleted file mode 100644
index 13fb81a2826d9660230a7da1844d8622d94231f6..0000000000000000000000000000000000000000
--- a/alib2std/src/extensions/pointer.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * pointer.hpp
- *
- * Created on: Apr 1, 2013
- * Author: Jan Travnicek
- */
-
-#ifndef __POINTER_HPP_
-#define __POINTER_HPP_
-
-#include <cstdlib>
-
-namespace std {
-
-template<typename T>
-class pointer {
-	T* ptr;
-public:
-	pointer(T* ptr) : ptr(ptr) {}
-
-	bool operator<(const pointer<T>& other) const {
-		if(ptr == other.ptr) return 0;
-		if(ptr == NULL) return 1;
-		if(other.ptr == NULL) return 0;
-		return *ptr < *other.ptr;
-	}
-
-	bool operator==(const pointer<T>& other) const {
-		if(ptr == other.ptr) return 1;
-		if(ptr == NULL) return 0;
-		if(other.ptr == NULL) return 0;
-		return *ptr == *other.ptr;
-	}
-
-	friend ostream& operator<<(ostream& out, const pointer<T>& other) {
-		if(other.ptr == NULL)
-			out << "NULL";
-		else
-			out << *other.ptr;
-		return out;
-	}
-};
-
-} /* namespace std */
-
-#endif /* __POINTER_HPP_ */
-
diff --git a/alib2std/src/extensions/tuple.hpp b/alib2std/src/extensions/tuple.hpp
index 8c85a5c943408f2c434bd28f5e73ed528d111a5e..e54377aa1118f0fd308e23bbee71d33f15cbfeca 100644
--- a/alib2std/src/extensions/tuple.hpp
+++ b/alib2std/src/extensions/tuple.hpp
@@ -36,15 +36,13 @@ std::ostream& operator<<(std::ostream& out, const std::tuple<Ts...>& tuple) {
 	return out;
 }
 
-
-
 template<int I, typename Tuple>
 struct compareTupleHelper;
 
 template<int I, typename Tuple>
 struct compareTupleHelper {
 	static int compHelp(const Tuple& t1, const Tuple& t2) {
-		compare<typename tuple_element<I, Tuple>::type> comp;
+		compare<typename std::decay < typename tuple_element<I, Tuple>::type >::type > comp;
 		int res = comp(std::get<I>(t1), std::get<I>(t2));
 		if(res != 0) return res;
 		return compareTupleHelper<I - 1, Tuple>::compHelp(t1, t2);
@@ -54,12 +52,11 @@ struct compareTupleHelper {
 template<class Tuple>
 struct compareTupleHelper<0, Tuple> {
 	static int compHelp(const Tuple& t1, const Tuple& t2) {
-		compare<typename tuple_element<0, Tuple>::type> comp;
+		compare<typename std::decay < typename tuple_element<0, Tuple>::type >::type > comp;
 		return comp(std::get<0>(t1), std::get<0>(t2));
 	}
 };
 
-
 template<typename ... Ts>
 struct compare<tuple<Ts...>> {
 	int operator()(const tuple<Ts...>& first, const tuple<Ts...>& second) const {
@@ -67,37 +64,6 @@ struct compare<tuple<Ts...>> {
 	}
 };
 
-
-
-template<int I, typename Tie>
-struct compareTieHelper;
-
-template<int I, typename Tie>
-struct compareTieHelper {
-	static int compHelp(const Tie& t1, const Tie& t2) {
-		compare<typename std::remove_const<typename std::remove_reference<typename tuple_element<I, Tie>::type>::type>::type> comp;
-		int res = comp(std::get<I>(t1), std::get<I>(t2));
-		if(res != 0) return res;
-		return compareTieHelper<I - 1, Tie>::compHelp(t1, t2);
-	}
-};
-
-template<class Tie>
-struct compareTieHelper<0, Tie> {
-	static int compHelp(const Tie& t1, const Tie& t2) {
-		compare<typename std::remove_const<typename std::remove_reference<typename tuple_element<0, Tie>::type>::type>::type> comp;
-		return comp(std::get<0>(t1), std::get<0>(t2));
-	}
-};
-
-
-template<typename ... Ts>
-struct compare<tuple<Ts&...>> {
-	int operator()(const tuple<Ts&...>& first, const tuple<Ts&...>& second) const {
-		return compareTieHelper<tuple_size<std::tuple<Ts&...>>::value - 1, std::tuple<Ts&...>>::compHelp(first, second);
-	}
-};
-
 } /* namespace std */
 
 #endif /* __TUPLE_HPP_ */
diff --git a/alib2std/src/extensions/vector.hpp b/alib2std/src/extensions/vector.hpp
index 268dfcbbb100be7e22d0cc5a273b9bcedcdd60a8..7efeaba3f70431b6418c407d220e1f0bc3c18fa9 100644
--- a/alib2std/src/extensions/vector.hpp
+++ b/alib2std/src/extensions/vector.hpp
@@ -10,158 +10,6 @@
 
 namespace std {
 
-template <class Iterator>
-class ptr_vector_iterator {
-	Iterator current;
-
-public:
-	typedef Iterator iterator_type;
-	typedef typename iterator_traits<Iterator>::iterator_category iterator_category;
-	typedef typename iterator_traits<Iterator>::value_type        value_type;
-	typedef Iterator pointer;
-	typedef typename std::remove_pointer<value_type>::type& reference;
-
-	explicit ptr_vector_iterator() {
-	}
-
-	explicit ptr_vector_iterator (Iterator it) : current(it) {
-	}
-
-	ptr_vector_iterator (const ptr_vector_iterator<Iterator>& it) : current(it.current) {
-	}
-
-	ptr_vector_iterator& operator= (const ptr_vector_iterator<Iterator>& it) {
-		current = it.current;
-	}
-
-	iterator_type base() const {
-		return current;
-	}
-
-	pointer operator->() const {
-		return *current;
-	}
-
-	reference operator*() const {
-		return **current;
-	}
-
-	ptr_vector_iterator& operator++() {
-		++current;
-		return *this;
-	}
-
-	ptr_vector_iterator& operator--() {
-		--current;
-		return *this;
-	}
-
-	ptr_vector_iterator operator++(int) {
-		ptr_vector_iterator temp = *this;
-		++current;
-		return temp;
-	}
-
-	ptr_vector_iterator operator--(int) {
-		ptr_vector_iterator temp = *this;
-		--current;
-		return temp;
-	}
-
-	bool operator== (const ptr_vector_iterator<Iterator>& other) {
-		return this->current == other.current;
-	}
-
-	bool operator!= (const ptr_vector_iterator<Iterator>& other) {
-		return ! ( *this == other );
-	}
-
-};
-
-template<class Iterator>
-ptr_vector_iterator<Iterator> make_ptr_vector_iterator (Iterator it) {
-	return ptr_vector_iterator<Iterator>(it);
-}
-
-
-template<class T>
-class ptr_vector {
-	vector<T*> data;
-
-public:
-	ptr_vector() {}
-
-	ptr_vector(const ptr_vector<T>& other) {
-		data.reserve(other.size());
-		for(T* ptr : other.data) {
-			data.push_back(std::clone(ptr));
-		}
-	}
-
-	ptr_vector(ptr_vector<T>&& other) noexcept {
-		std::swap(this->data, other.data);
-	}
-
-	ptr_vector<T>& operator=(const ptr_vector<T>& other) {
-		if(this == *other) return *this;
-
-		*this = ptr_vector(other);
-
-		return *this;
-	}
-
-	~ptr_vector() noexcept {
-		for(T* elem : data) {
-			delete elem;
-		}
-	}
-
-	ptr_vector<T>& operator=(ptr_vector<T>&& other) noexcept {
-		std::swap(this->data, other.data);
-		return *this;
-	}
-
-	T& operator[]( int n ) {
-		return *data[n];
-	}
-
-	const T& operator[]( int n ) const {
-		return *data[n];
-	}
-
-	void push_back(T* elem) {
-		data.push_back(elem);
-	}
-
-	unsigned size() const {
-		return data.size();
-	}
-
-	ptr_vector_iterator<typename std::vector<T*>::iterator> begin() {
-		return make_ptr_vector_iterator(data.begin());
-	}
-
-	ptr_vector_iterator<typename std::vector<T*>::iterator> end() {
-		return make_ptr_vector_iterator(data.end());
-	}
-
-	ptr_vector_iterator<typename std::vector<T*>::const_iterator> begin() const {
-		return make_ptr_vector_iterator(data.cbegin());
-	}
-
-	ptr_vector_iterator<typename std::vector<T*>::const_iterator> end() const {
-		return make_ptr_vector_iterator(data.cend());
-	}
-
-	ptr_vector_iterator<typename std::vector<T*>::const_iterator> cbegin() {
-		return make_ptr_vector_iterator(data.cbegin());
-	}
-
-	ptr_vector_iterator<typename std::vector<T*>::const_iterator> cend() {
-		return make_ptr_vector_iterator(data.cend());
-	}
-};
-
 template< class T , class Allocator >
 std::ostream& operator<<(std::ostream& out, const std::vector<T, Allocator>& vector) {
 	out << "[";
@@ -177,21 +25,6 @@ std::ostream& operator<<(std::ostream& out, const std::vector<T, Allocator>& vec
 	return out;
 }
 
-template< class T >
-std::ostream& operator<<(std::ostream& out, const std::ptr_vector<T>& vector) {
-	out << "[";
-
-	bool first = true;
-	for(const T& item : vector) {
-		if(!first) out << ", ";
-		first = false;
-		out << item;
-	}
-
-	out << "]";
-	return out;
-}
-
 template<class T, class Allocator>
 struct compare<vector<T, Allocator>> {
 	int operator()(const vector<T, Allocator>& first, const vector<T, Allocator>& second) const {
@@ -207,21 +40,6 @@ struct compare<vector<T, Allocator>> {
 	}
 };
 
-template<class T>
-struct compare<ptr_vector<T>> {
-	int operator()(const ptr_vector<T>& first, const ptr_vector<T>& second) const {
-		if(first.size() < second.size()) return -1;
-		if(first.size() > second.size()) return 1;
-
-		compare<T> comp;
-		for(auto iterF = first.begin(), iterS = second.begin(); iterF != first.end(); ++iterF, ++iterS) {
-			int res = comp(*iterF, *iterS);
-			if(res != 0) return res;
-		}
-		return 0;
-	}
-};
-
 } /* namespace std */
 
 #endif /* __VECTOR_HPP_ */
diff --git a/alib2std/test-src/extensions/VectorTest.cpp b/alib2std/test-src/extensions/VectorTest.cpp
index 3a3986d15c9bfa3f361bc6582876c47e534d0a40..e7420bda416ecfb05722454c3428ae4486a048fc 100644
--- a/alib2std/test-src/extensions/VectorTest.cpp
+++ b/alib2std/test-src/extensions/VectorTest.cpp
@@ -11,46 +11,6 @@ void VectorTest::setUp() {
 void VectorTest::tearDown() {
 }
 
-void VectorTest::testVector() {
-	std::ptr_vector<VectorTest::test> vector;
-	std::vector<VectorTest::test*> vector2;
-
-	for(int i = 0; i < 10; i++) {
-		VectorTest::test* tmp = new VectorTest::test(i);
-		vector.push_back(tmp);
-		vector2.push_back(tmp);
-	}
-
-	int i = 0;
-	for(VectorTest::test& tmp : vector) {
-		CPPUNIT_ASSERT(tmp.get() == i);
-		i++;
-	}
-
-	const decltype(vector)& vector3 = vector;
-
-	i = 0;
-	for(const VectorTest::test& tmp : vector3) {
-		CPPUNIT_ASSERT(tmp.get() == i);
-		i++;
-	}
-
-	i = 0;
-	for(VectorTest::test& tmp : vector3) {
-		CPPUNIT_ASSERT(tmp.get() == i);
-		i++;
-	}
-
-	std::ptr_vector<VectorTest::test> vector4;
-	for(int i = 0; i < 10; i++) {
-		VectorTest::test* tmp = new VectorTest::test(i+1);
-		vector4.push_back(tmp);
-	}
-
-	std::compare<std::ptr_vector<VectorTest::test>> comp;
-	CPPUNIT_ASSERT(comp(vector, vector4) < 0);
-}
-
 void VectorTest::testProperties() {
 	std::vector<int> data = {1, 2, 3, 4};
 
diff --git a/alib2std/test-src/extensions/VectorTest.h b/alib2std/test-src/extensions/VectorTest.h
index b1b31ec93fec64621df1ecddf5d6d4a9b38c146d..4416d62c594727b230a657a0051c9f075195d487 100644
--- a/alib2std/test-src/extensions/VectorTest.h
+++ b/alib2std/test-src/extensions/VectorTest.h
@@ -7,38 +7,14 @@
 class VectorTest : public CppUnit::TestFixture
 {
   CPPUNIT_TEST_SUITE( VectorTest );
-  CPPUNIT_TEST( testVector );
   CPPUNIT_TEST( testProperties );
   CPPUNIT_TEST_SUITE_END();
 
-public:
-struct test {
-	int i;
-
-	test(int i) : i(i) {}
-
-	int get() const {
-		return i;
-	}
-};
-
 public:
   void setUp();
   void tearDown();
 
-  void testVector();
   void testProperties();
 };
 
-
-namespace std {
-
-template<>
-struct compare<VectorTest::test> {
-	int operator()(const VectorTest::test& first, const VectorTest::test& second) {
-		return first.get() - second.get();
-	}
-};
-
-} /* namespace std */
 #endif  // VARIANT_TEST_H_