diff --git a/alib2common/src/container/ObjectsBitset.h b/alib2common/src/container/ObjectsBitset.h
new file mode 100644
index 0000000000000000000000000000000000000000..dc5d599ea1d0d907969414a08a84dbb2a36c45ca
--- /dev/null
+++ b/alib2common/src/container/ObjectsBitset.h
@@ -0,0 +1,97 @@
+/*
+ * Tuple.h
+ *
+ * Created on: May 4, 2017
+ * Author: Jan Travnicek
+ */
+
+#ifndef OBJECTS_BITSET_H_
+#define OBJECTS_BITSET_H_
+
+#include <bitset>
+#include <string>
+
+#include <core/xmlApi.hpp>
+#include <exception/CommonException.h>
+
+#include <primitive/Bool.h>
+
+namespace container {
+
+/**
+ * Basic container from which are derived all other containers.
+ * Contains reason why the container occurred.
+ */
+class ObjectsBitset {
+private:
+	explicit ObjectsBitset ( );
+
+public:
+	static const std::string & getXmlTagName() {
+		static std::string xmlTagName = "Bitset";
+
+		return xmlTagName;
+	}
+
+	template < size_t N >
+	static std::bitset < N > parseRaw ( std::deque < sax::Token >::iterator & input );
+
+	template < size_t N >
+	static void compose ( std::deque < sax::Token > & out, const std::bitset < N > & input );
+};
+
+
+
+template < size_t N >
+std::bitset < N > ObjectsBitset::parseRaw ( std::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ObjectsBitset::getXmlTagName() );
+
+	std::bitset < N > res;
+
+	for ( size_t i = 0; i < N; ++i )
+		res [ i ] = alib::xmlApi < bool >::parse ( input );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ObjectsBitset::getXmlTagName() );
+
+	return res;
+}
+
+template < size_t N >
+void ObjectsBitset::compose ( std::deque < sax::Token > & out, const std::bitset < N > & container ) {
+	out.emplace_back ( ObjectsBitset::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
+
+	for ( size_t i = 0; i < N; ++i )
+		alib::xmlApi < bool >::compose ( out, container [ i ] );
+
+	out.emplace_back ( ObjectsBitset::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace container */
+
+namespace alib {
+
+template < size_t N >
+struct xmlApi < std::bitset < N > > {
+	static std::bitset < N > parse ( std::deque < sax::Token >::iterator & input );
+	static bool first ( const std::deque < sax::Token >::const_iterator & input );
+	static void compose ( std::deque < sax::Token > & output, const std::bitset < N > & data );
+};
+
+template < size_t N >
+std::bitset < N > xmlApi < std::bitset < N > >::parse ( std::deque < sax::Token >::iterator & input ) {
+	return container::ObjectsBitset::parseRaw < N > ( input );
+}
+
+template < size_t N >
+bool xmlApi < std::bitset < N > >::first ( const std::deque < sax::Token >::const_iterator & input ) {
+	return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, container::ObjectsBitset::getXmlTagName() );
+}
+
+template < size_t N >
+void xmlApi < std::bitset < N > >::compose ( std::deque < sax::Token > & output, const std::bitset < N > & input ) {
+	return container::ObjectsBitset::compose < N > ( output, input );
+}
+
+} /* namespace alib */
+
+#endif /* OBJECTS_BITSET_H_ */
diff --git a/alib2std/src/bitset b/alib2std/src/bitset
new file mode 100644
index 0000000000000000000000000000000000000000..4e8b735ab4eb10a5011048bf1a5615df6d9950b1
--- /dev/null
+++ b/alib2std/src/bitset
@@ -0,0 +1,12 @@
+#ifndef __BITSET_HEADER_WRAPPER_
+#define __BITSET_HEADER_WRAPPER_
+
+#include <bits/../bitset>
+#include <ostream>
+#include "compare"
+#include "string"
+#include "sstream"
+#include "extensions/bitset.hpp"
+
+#endif /* __BITSET_HEADER_WRAPPER_ */
+
diff --git a/alib2std/src/extensions/bitset.hpp b/alib2std/src/extensions/bitset.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..40102b33a1544839f28ddf757e50f828ed24c558
--- /dev/null
+++ b/alib2std/src/extensions/bitset.hpp
@@ -0,0 +1,47 @@
+/*
+ * bitset.hpp
+ *
+ * Created on: May 04, 2017
+ * Author: Jan Travnicek
+ */
+
+#ifndef __BITSET_HPP_
+#define __BITSET_HPP_
+
+namespace std {
+
+template < size_t N >
+std::ostream & operator << ( std::ostream & out, const std::bitset < N > & bitset ) {
+	out << "[";
+
+	for ( size_t i = 0; i < N; ++i ) {
+		if ( i != 0 ) out << ", ";
+		out << bitset [ i ];
+	}
+
+	out << "]";
+	return out;
+}
+
+template < size_t N >
+struct compare < bitset < N > > {
+	int operator ( ) ( const bitset < N > & first, const bitset < N > & second ) const {
+		for ( size_t i = 0; i < N; ++i ) {
+			int res = first [ i ] != second [ i ];
+			if ( res != 0 )
+				return res;
+		}
+		return 0;
+	}
+};
+
+template < size_t N >
+string to_string ( const std::bitset < N > & value ) {
+	std::stringstream ss;
+	ss << value;
+	return ss.str ( );
+}
+
+} /* namespace std */
+
+#endif /* __BITSET_HPP_ */