diff --git a/alib2data/src/XmlApi.cpp b/alib2data/src/XmlApi.cpp
index ce202080db3f417e8a1af0a986cfd880c1a6f70f..7d1093b107f49af1121f0cb6f608592c1c035557 100644
--- a/alib2data/src/XmlApi.cpp
+++ b/alib2data/src/XmlApi.cpp
@@ -981,6 +981,30 @@ void xmlApi<primitive::Character>::compose(std::list<sax::Token>& output, const
 	ToXMLComposers::primitiveComposer.compose(output, data);
 }
 
+primitive::Unsigned xmlApi<primitive::Unsigned>::parse(std::list<sax::Token>& input) {
+	return FromXMLParsers::primitiveParser.parseUnsigned(input);
+}
+
+bool xmlApi<primitive::Unsigned>::first(const std::list<sax::Token>& input) {
+	return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_UNSIGNED);
+}
+
+void xmlApi<primitive::Unsigned>::compose(std::list<sax::Token>& output, const primitive::Unsigned& data) {
+	ToXMLComposers::primitiveComposer.compose(output, data);
+}
+
+primitive::Bool xmlApi<primitive::Bool>::parse(std::list<sax::Token>& input) {
+	return FromXMLParsers::primitiveParser.parseBool(input);
+}
+
+bool xmlApi<primitive::Bool>::first(const std::list<sax::Token>& input) {
+	return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_BOOL);
+}
+
+void xmlApi<primitive::Bool>::compose(std::list<sax::Token>& output, const primitive::Bool& data) {
+	ToXMLComposers::primitiveComposer.compose(output, data);
+}
+
 char xmlApi<char>::parse(std::list<sax::Token>& input) {
 	return FromXMLParsers::primitiveParser.parseCharacterRaw(input);
 }
@@ -1261,4 +1285,12 @@ void ToXMLComposers::Visit(void* data, const primitive::Character& primitive) co
 	xmlApi<primitive::Character>::compose(*((std::list<sax::Token>*) data), primitive);
 }
 
+void ToXMLComposers::Visit(void* data, const primitive::Unsigned& primitive) const {
+	xmlApi<primitive::Unsigned>::compose(*((std::list<sax::Token>*) data), primitive);
+}
+
+void ToXMLComposers::Visit(void* data, const primitive::Bool& primitive) const {
+	xmlApi<primitive::Bool>::compose(*((std::list<sax::Token>*) data), primitive);
+}
+
 } /* namespace alib */
diff --git a/alib2data/src/XmlApi.hpp b/alib2data/src/XmlApi.hpp
index c7c9827d368531f1109bdce0e2644751eded6d14..ceda78aafa3c30e7243a4097cdf76c87e12e6d81 100644
--- a/alib2data/src/XmlApi.hpp
+++ b/alib2data/src/XmlApi.hpp
@@ -668,6 +668,13 @@ struct xmlApi<char> {
 	static void compose(std::list<sax::Token>& output, char data);
 };
 
+template<>
+struct xmlApi<primitive::Unsigned> {
+	static primitive::Unsigned parse(std::list<sax::Token>& input);
+	static bool first(const std::list<sax::Token>& input);
+	static void compose(std::list<sax::Token>& output, const primitive::Unsigned& data);
+};
+
 template<>
 struct xmlApi<unsigned> {
 	static unsigned parse(std::list<sax::Token>& input);
@@ -675,6 +682,13 @@ struct xmlApi<unsigned> {
 	static void compose(std::list<sax::Token>& output, unsigned data);
 };
 
+template<>
+struct xmlApi<primitive::Bool> {
+	static primitive::Bool parse(std::list<sax::Token>& input);
+	static bool first(const std::list<sax::Token>& input);
+	static void compose(std::list<sax::Token>& output, const primitive::Bool& data);
+};
+
 template<>
 struct xmlApi<bool> {
 	static bool parse(std::list<sax::Token>& input);
@@ -787,6 +801,8 @@ class ToXMLComposers : public VisitableObjectBase::const_visitor_type {
 	void Visit(void*, const primitive::String& primitive) const;
 	void Visit(void*, const primitive::Integer& primitive) const;
 	void Visit(void*, const primitive::Character& primitive) const;
+	void Visit(void*, const primitive::Unsigned& primitive) const;
+	void Visit(void*, const primitive::Bool& primitive) const;
 
 public:
 	static const label::LabelToXMLComposer labelComposer;
diff --git a/alib2data/src/object/ObjectBase.h b/alib2data/src/object/ObjectBase.h
index faf1d566c75be5e4a7ef7e2e37a52ee885a49378..a42e730aa388c3ada574916cd1e813b368132725 100644
--- a/alib2data/src/object/ObjectBase.h
+++ b/alib2data/src/object/ObjectBase.h
@@ -120,6 +120,8 @@ namespace primitive {
 class String;
 class Integer;
 class Character;
+class Unsigned;
+class Bool;
 
 }
 
@@ -137,7 +139,7 @@ typedef std::acceptor_base<ObjectBase,
 			string::Epsilon, string::LinearString, string::CyclicString,
 			alphabet::StartSymbol, alphabet::LabeledSymbol, alphabet::BlankSymbol, alphabet::BottomOfTheStackSymbol, alphabet::RankedSymbol, alphabet::BarSymbol, alphabet::RankedBarSymbol, alphabet::SubtreeWildcardSymbol, alphabet::SymbolPairSymbol, alphabet::SymbolSetSymbol, alphabet::UniqueSymbol, alphabet::EndSymbol,
 			container::ObjectsSet, container::ObjectsVector, container::ObjectsPair, container::ObjectsMap,
-			primitive::String, primitive::Integer, primitive::Character
+			primitive::String, primitive::Integer, primitive::Character, primitive::Unsigned, primitive::Bool
 	> VisitableObjectBase;
 
 class ObjectBase :
@@ -152,7 +154,7 @@ class ObjectBase :
 			string::Epsilon, string::LinearString, string::CyclicString,
 			alphabet::StartSymbol, alphabet::LabeledSymbol, alphabet::BlankSymbol, alphabet::BottomOfTheStackSymbol, alphabet::RankedSymbol, alphabet::BarSymbol, alphabet::RankedBarSymbol, alphabet::SubtreeWildcardSymbol, alphabet::SymbolPairSymbol, alphabet::SymbolSetSymbol, alphabet::UniqueSymbol, alphabet::EndSymbol,
 			container::ObjectsSet, container::ObjectsVector, container::ObjectsPair, container::ObjectsMap,
-			primitive::String, primitive::Integer, primitive::Character
+			primitive::String, primitive::Integer, primitive::Character, primitive::Unsigned, primitive::Bool
 	>, public VisitableObjectBase {
 };
 
diff --git a/alib2data/src/primitive/Bool.cpp b/alib2data/src/primitive/Bool.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9f4cbf3feb33e7b445ae70182a2cce8b53de5192
--- /dev/null
+++ b/alib2data/src/primitive/Bool.cpp
@@ -0,0 +1,41 @@
+/*
+ * Bool.cpp
+ *
+ *  Created on: Mar 26, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "Bool.h"
+
+namespace primitive {
+
+Bool::Bool(bool data) : data(data) {
+
+}
+
+PrimitiveBase* Bool::clone() const {
+	return new Bool(*this);
+}
+
+PrimitiveBase* Bool::plunder() && {
+	return new Bool(std::move(*this));
+}
+
+bool Bool::getData() const {
+	return data;
+}
+
+int Bool::compare(const Bool& other) const {
+	return data - other.data;
+}
+
+void Bool::operator>>(std::ostream& out) const {
+	out << "(Bool " << (data ? "true" : "false") << ")";
+}
+
+Bool::operator std::string() const {
+	return data ? "true" : "false";
+}
+
+} /* namespace primitive */
+
diff --git a/alib2data/src/primitive/Bool.h b/alib2data/src/primitive/Bool.h
new file mode 100644
index 0000000000000000000000000000000000000000..c3dee8ace3663d895f20301cd8eb9cc2fe6962e5
--- /dev/null
+++ b/alib2data/src/primitive/Bool.h
@@ -0,0 +1,68 @@
+/*
+ * Bool.h
+ *
+ *  Created on: Mar 26, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef PRIMITIVE_BOOL_H_
+#define PRIMITIVE_BOOL_H_
+
+#include <ostream>
+
+#include "PrimitiveBase.h"
+
+namespace primitive {
+
+/**
+ * Represents symbol in an alphabet.
+ */
+class Bool : public std::acceptor<Bool, VisitablePrimitiveBase, std::acceptor<Bool, alib::VisitableObjectBase, PrimitiveBase> > {
+protected:
+	bool data;
+
+public:
+	/**
+	 * Creates new symbol with given name.
+	 * @param symbol name of the symbol
+	 */
+	explicit Bool(bool data);
+
+	virtual PrimitiveBase* clone() const;
+
+	virtual PrimitiveBase* plunder() &&;
+
+	/**
+	 * @return name of the symbol
+	 */
+	bool getData() const;
+
+	virtual int compare(const ObjectBase& other) const {
+		return -other.compare(*this);
+	}
+
+	virtual int compare(const Bool& other) const;
+
+	virtual void operator>>(std::ostream&) const;
+
+	virtual operator std::string() const;
+
+	virtual int selfTypeId() const {
+		return typeId<Bool>();
+	}
+};
+
+} /* namespace primitive */
+
+namespace std {
+
+template<>
+struct compare<primitive::Bool> {
+	int operator()(const primitive::Bool& first, const primitive::Bool& second) const {
+		return first.compare(second);
+	}
+};
+
+} /* namespace std */
+
+#endif /* PRIMITIVE_BOOL_H_ */
diff --git a/alib2data/src/primitive/Integer.cpp b/alib2data/src/primitive/Integer.cpp
index 70bc8e335d7768038e6962ad7e18823da3c98130..f79b92af230931309721d26855b97a372a50083d 100644
--- a/alib2data/src/primitive/Integer.cpp
+++ b/alib2data/src/primitive/Integer.cpp
@@ -2,7 +2,7 @@
  * Integer.cpp
  *
  *  Created on: Mar 26, 2013
- *      Author: Jan Travnicek 
+ *      Author: Jan Travnicek
  */
 
 #include "Integer.h"
diff --git a/alib2data/src/primitive/Integer.h b/alib2data/src/primitive/Integer.h
index 42aedfd0870da3b0f0f9cb91107311fdabd87b69..88ee421be0bea1446f46b6b68692997ac1fded24 100644
--- a/alib2data/src/primitive/Integer.h
+++ b/alib2data/src/primitive/Integer.h
@@ -42,7 +42,7 @@ public:
 	}
 
 	virtual int compare(const Integer& other) const;
-	
+
 	virtual void operator>>(std::ostream&) const;
 
 	virtual operator std::string() const;
diff --git a/alib2data/src/primitive/NextPrimitive.cpp b/alib2data/src/primitive/NextPrimitive.cpp
index c85c716f353f080dd9c3ec0630b30240a5f5980d..4a77fbb25615a5c1e6cab2cee769ee9d38ee18b2 100644
--- a/alib2data/src/primitive/NextPrimitive.cpp
+++ b/alib2data/src/primitive/NextPrimitive.cpp
@@ -9,6 +9,8 @@
 #include "Integer.h"
 #include "String.h"
 #include "Character.h"
+#include "Unsigned.h"
+#include "Bool.h"
 #include "../std/itos.h"
 
 namespace primitive {
@@ -31,6 +33,18 @@ void NextPrimitive::Visit(void* userData, const String& primitive) {
 	out = new Primitive(String(primitive.getData() + '\''));
 }
 
+void NextPrimitive::Visit(void* userData, const Unsigned& primitive) {
+	Primitive* &out = *((Primitive**) userData);
+
+	out = new Primitive(Unsigned(primitive.getData() + 1));
+}
+
+void NextPrimitive::Visit(void* userData, const Bool& primitive) {
+	Primitive* &out = *((Primitive**) userData);
+
+	out = new Primitive(Bool(!primitive.getData()));
+}
+
 Primitive NextPrimitive::nextPrimitive(const Primitive& primitive) {
 	Primitive* out;
 	primitive.getData().Accept((void*) &out, *this);
diff --git a/alib2data/src/primitive/NextPrimitive.h b/alib2data/src/primitive/NextPrimitive.h
index 2d5d4d8ae1621af01f9aae4c80d80d3c1607e3bf..aaafb4489175b804a9329c8d5c3a0d4cd5af0b5f 100644
--- a/alib2data/src/primitive/NextPrimitive.h
+++ b/alib2data/src/primitive/NextPrimitive.h
@@ -21,6 +21,8 @@ class NextPrimitive : public VisitablePrimitiveBase::visitor_type {
 	void Visit(void*, const String& primitive);
 	void Visit(void*, const Integer& primitive);
 	void Visit(void*, const Character& primitive);
+	void Visit(void*, const Unsigned& primitive);
+	void Visit(void*, const Bool& primitive);
 
 public:
 	/**
diff --git a/alib2data/src/primitive/Primitive.cpp b/alib2data/src/primitive/Primitive.cpp
index 58082965efb387e5179bac0ca73def9ef42d89d6..24b9f9cf2eb1d00de2d10c7bd3c583919bf1291c 100644
--- a/alib2data/src/primitive/Primitive.cpp
+++ b/alib2data/src/primitive/Primitive.cpp
@@ -9,6 +9,8 @@
 #include "Integer.h"
 #include "Character.h"
 #include "String.h"
+#include "Unsigned.h"
+#include "Bool.h"
 
 namespace primitive {
 
@@ -24,5 +26,13 @@ Primitive primitiveFrom(std::string string) {
 	return Primitive { String { string } };
 }
 
+Primitive primitiveFrom(unsigned number) {
+	return Primitive { Unsigned { number } };
+}
+
+Primitive primitiveFrom(bool value) {
+	return Primitive { Bool { value } };
+}
+
 } /* namespace primitive */
 
diff --git a/alib2data/src/primitive/Primitive.h b/alib2data/src/primitive/Primitive.h
index 27531cae41a710c9f63677144b12851ccc90ad12..5deca51cede323e818947b0dbc3ec66e707d3af7 100644
--- a/alib2data/src/primitive/Primitive.h
+++ b/alib2data/src/primitive/Primitive.h
@@ -23,6 +23,8 @@ typedef alib::wrapper<PrimitiveBase> Primitive;
 Primitive primitiveFrom(int number);
 Primitive primitiveFrom(char character);
 Primitive primitiveFrom(std::string string);
+Primitive primitiveFrom(unsigned number);
+Primitive primitiveFrom(bool value);
 
 } /* namespace primitive */
 
diff --git a/alib2data/src/primitive/PrimitiveBase.h b/alib2data/src/primitive/PrimitiveBase.h
index a408eaef254b2ef62254d2c391000adee40b5ecb..8414ce2e7df15739a732887f542f5f1045c574d7 100644
--- a/alib2data/src/primitive/PrimitiveBase.h
+++ b/alib2data/src/primitive/PrimitiveBase.h
@@ -16,7 +16,7 @@ namespace primitive {
 class PrimitiveBase;
 
 typedef std::acceptor_base<PrimitiveBase,
-			primitive::String, primitive::Integer, primitive::Character
+			primitive::String, primitive::Integer, primitive::Character, primitive::Unsigned, primitive::Bool
 	> VisitablePrimitiveBase;
 
 /**
diff --git a/alib2data/src/primitive/PrimitiveFeatures.h b/alib2data/src/primitive/PrimitiveFeatures.h
index e06afdefb86da84cfbcd0b4ad829de9b5bde168d..2aec1a3b52f6df7002f9c5aebb3cc754577da827 100644
--- a/alib2data/src/primitive/PrimitiveFeatures.h
+++ b/alib2data/src/primitive/PrimitiveFeatures.h
@@ -13,7 +13,9 @@ namespace primitive {
 enum class FEATURES {
 	STRING,
 	CHAR,
-	INTEGER
+	INTEGER,
+	UNSIGNED,
+	BOOL
 };
 
 } /* namespace primitive */
diff --git a/alib2data/src/primitive/PrimitiveFromXMLParser.cpp b/alib2data/src/primitive/PrimitiveFromXMLParser.cpp
index bf4278b94da06f13c26be49ebe91b8587d546ba8..04605a9b385ce04729112201b555ea87d1b196ce 100644
--- a/alib2data/src/primitive/PrimitiveFromXMLParser.cpp
+++ b/alib2data/src/primitive/PrimitiveFromXMLParser.cpp
@@ -28,13 +28,19 @@ Primitive PrimitiveFromXMLParser::parsePrimitive(std::list<sax::Token>& input, c
 	} else if(alib::xmlApi<Character>::first(input)) {
 		if(!features.count(FEATURES::CHAR)) throw exception::AlibException();
 		return Primitive(parseCharacter(input));
+	} else if(alib::xmlApi<Unsigned>::first(input)) {
+		if(!features.count(FEATURES::UNSIGNED)) throw exception::AlibException();
+		return Primitive(parseUnsigned(input));
+	} else if(alib::xmlApi<Bool>::first(input)) {
+		if(!features.count(FEATURES::BOOL)) throw exception::AlibException();
+		return Primitive(parseBool(input));
 	} else {
-		throw sax::ParserException(sax::Token("Integer, String, Character", sax::Token::TokenType::START_ELEMENT), input.front());
+		throw sax::ParserException(sax::Token("Integer, String, Character, Unsigned, Bool", sax::Token::TokenType::START_ELEMENT), input.front());
 	}
 }
 
 bool PrimitiveFromXMLParser::first(const std::list<sax::Token>& input) const {
-	if(alib::xmlApi<Integer>::first(input) || alib::xmlApi<String>::first(input) || alib::xmlApi<Character>::first(input)) {
+	if(alib::xmlApi<Integer>::first(input) || alib::xmlApi<String>::first(input) || alib::xmlApi<Character>::first(input) || alib::xmlApi<Unsigned>::first(input) || alib::xmlApi<Bool>::first(input)) {
 		return true;
 	} else {
 		return false;
@@ -62,6 +68,27 @@ String PrimitiveFromXMLParser::parseString(std::list<sax::Token>& input) const {
 	return data;
 }
 
+Unsigned PrimitiveFromXMLParser::parseUnsigned(std::list<sax::Token>& input) const {
+	popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_UNSIGNED);
+	Unsigned data(std::stou(popTokenData(input, sax::Token::TokenType::CHARACTER)));
+	popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_UNSIGNED);
+	return data;
+}
+
+Bool PrimitiveFromXMLParser::parseBool(std::list<sax::Token>& input) const {
+	popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_BOOL);
+	std::string tmp = popTokenData(input, sax::Token::TokenType::CHARACTER);
+	bool data;
+	if(tmp == "true")
+		data = true;
+	else if(tmp == "false")
+		data = false;
+	else
+		throw exception::AlibException("Invalid boolean value");
+	popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_BOOL);
+	return Bool(data);
+}
+
 int PrimitiveFromXMLParser::parseIntegerRaw(std::list<sax::Token>& input) const {
 	popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_INTEGER);
 	int data = std::stoi(popTokenData(input, sax::Token::TokenType::CHARACTER));
diff --git a/alib2data/src/primitive/PrimitiveFromXMLParser.h b/alib2data/src/primitive/PrimitiveFromXMLParser.h
index ea33caba1a9efd0bdbae2797e807db9f6aa93cac..c83f5e976e04857eeb94eb85606eff1ee142622e 100644
--- a/alib2data/src/primitive/PrimitiveFromXMLParser.h
+++ b/alib2data/src/primitive/PrimitiveFromXMLParser.h
@@ -15,6 +15,8 @@
 #include "String.h"
 #include "Integer.h"
 #include "Character.h"
+#include "Unsigned.h"
+#include "Bool.h"
 #include "../sax/Token.h"
 
 namespace alib {
@@ -36,6 +38,8 @@ class PrimitiveFromXMLParser : public sax::FromXMLParserHelper {
 	Integer parseInteger(std::list<sax::Token>& input) const;
 	Character parseCharacter(std::list<sax::Token>& input) const;
 	String parseString(std::list<sax::Token>& input) const;
+	Unsigned parseUnsigned(std::list<sax::Token>& input) const;
+	Bool parseBool(std::list<sax::Token>& input) const;
 
 	int parseIntegerRaw(std::list<sax::Token>& input) const;
 	char parseCharacterRaw(std::list<sax::Token>& input) const;
diff --git a/alib2data/src/primitive/PrimitiveToStringComposer.cpp b/alib2data/src/primitive/PrimitiveToStringComposer.cpp
index abfc428ca997f90f1338faad680d33a35971c2c6..04dbcb4e9fc8c627576d7d3a92aa9a64afc9beb6 100644
--- a/alib2data/src/primitive/PrimitiveToStringComposer.cpp
+++ b/alib2data/src/primitive/PrimitiveToStringComposer.cpp
@@ -9,6 +9,8 @@
 #include "Integer.h"
 #include "String.h"
 #include "Character.h"
+#include "Unsigned.h"
+#include "Bool.h"
 
 namespace primitive {
 
@@ -40,6 +42,18 @@ void PrimitiveToStringComposer::Visit(void* userData, const Integer& primitive)
 	out << primitive.getData();
 }
 
+void PrimitiveToStringComposer::Visit(void* userData, const Unsigned& primitive) const {
+	std::ostream &out = *((std::ostream*) userData);
+
+	out << primitive.getData();
+}
+
+void PrimitiveToStringComposer::Visit(void* userData, const Bool& primitive) const {
+	std::ostream &out = *((std::ostream*) userData);
+
+	out << (primitive.getData() ? "true" : "false");
+}
+
 void PrimitiveToStringComposer::compose(std::ostream& out, const Primitive& primitive) const {
 	primitive.getData().Accept((void*) &out, *this);
 }
diff --git a/alib2data/src/primitive/PrimitiveToStringComposer.h b/alib2data/src/primitive/PrimitiveToStringComposer.h
index ce3106a289574c481fe621525bed19510464fd73..b3a08bf8948c7a91ec5809c3d74d5d0985210b1c 100644
--- a/alib2data/src/primitive/PrimitiveToStringComposer.h
+++ b/alib2data/src/primitive/PrimitiveToStringComposer.h
@@ -20,6 +20,8 @@ class PrimitiveToStringComposer : public VisitablePrimitiveBase::const_visitor_t
 	void Visit(void*, const Integer& primitive) const;
 	void Visit(void*, const String& primitive) const;
 	void Visit(void*, const Character& primitive) const;
+	void Visit(void*, const Unsigned& primitive) const;
+	void Visit(void*, const Bool& primitive) const;
 public:
 	/**
 	 * Prints text representation of Primitive to the output stream.
diff --git a/alib2data/src/primitive/PrimitiveToXMLComposer.cpp b/alib2data/src/primitive/PrimitiveToXMLComposer.cpp
index dbd38121c7cf3686f122e551000a4449a338d16b..948d0c50882dc87eb593043de8f254cefa10adcd 100644
--- a/alib2data/src/primitive/PrimitiveToXMLComposer.cpp
+++ b/alib2data/src/primitive/PrimitiveToXMLComposer.cpp
@@ -36,6 +36,21 @@ void PrimitiveToXMLComposer::compose(std::list<sax::Token>& out, const Character
 	out.push_back(sax::Token(alib::Names::PRIMITIVE_CHARACTER, sax::Token::TokenType::END_ELEMENT));
 }
 
+void PrimitiveToXMLComposer::compose(std::list<sax::Token>& out, const Unsigned& primitive) const {
+	out.push_back(sax::Token(alib::Names::PRIMITIVE_UNSIGNED, sax::Token::TokenType::START_ELEMENT));
+	out.push_back(sax::Token(std::utos(primitive.getData()), sax::Token::TokenType::CHARACTER));
+	out.push_back(sax::Token(alib::Names::PRIMITIVE_UNSIGNED, sax::Token::TokenType::END_ELEMENT));
+}
+
+void PrimitiveToXMLComposer::compose(std::list<sax::Token>& out, const Bool& primitive) const {
+	out.push_back(sax::Token(alib::Names::PRIMITIVE_BOOL, sax::Token::TokenType::START_ELEMENT));
+	if(primitive.getData())
+		out.push_back(sax::Token("true", sax::Token::TokenType::END_ELEMENT));
+	else
+		out.push_back(sax::Token("false", sax::Token::TokenType::END_ELEMENT));
+	out.push_back(sax::Token(alib::Names::PRIMITIVE_BOOL, sax::Token::TokenType::END_ELEMENT));
+}
+
 void PrimitiveToXMLComposer::compose(std::list<sax::Token>& out, const String& primitive) const {
 	out.push_back(sax::Token(alib::Names::PRIMITIVE_STRING, sax::Token::TokenType::START_ELEMENT));
 	out.push_back(sax::Token(primitive.getData(), sax::Token::TokenType::CHARACTER));
diff --git a/alib2data/src/primitive/PrimitiveToXMLComposer.h b/alib2data/src/primitive/PrimitiveToXMLComposer.h
index 7fd2bc90bcde97fede10c0d12a8866424b62c56c..4d35fda16ee7ab772ceb6c14c52f58f8d20a1383 100644
--- a/alib2data/src/primitive/PrimitiveToXMLComposer.h
+++ b/alib2data/src/primitive/PrimitiveToXMLComposer.h
@@ -44,6 +44,8 @@ class PrimitiveToXMLComposer {
 	void compose(std::list<sax::Token>& out, const String& primitive) const;
 	void compose(std::list<sax::Token>& out, const Integer& primitive) const;
 	void compose(std::list<sax::Token>& out, const Character& primitive) const;
+	void compose(std::list<sax::Token>& out, const Unsigned& primitive) const;
+	void compose(std::list<sax::Token>& out, const Bool& primitive) const;
 
 	void compose(std::list<sax::Token>& out, const std::string& primitive) const;
 	void compose(std::list<sax::Token>& out, int primitive) const;
diff --git a/alib2data/src/primitive/Unsigned.cpp b/alib2data/src/primitive/Unsigned.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cb477ffa7265cd3774bc0a9ee5ad6647e36409c0
--- /dev/null
+++ b/alib2data/src/primitive/Unsigned.cpp
@@ -0,0 +1,41 @@
+/*
+ * Unsigned.cpp
+ *
+ *  Created on: Mar 26, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "Unsigned.h"
+
+namespace primitive {
+
+Unsigned::Unsigned(unsigned data) : data(data) {
+
+}
+
+PrimitiveBase* Unsigned::clone() const {
+	return new Unsigned(*this);
+}
+
+PrimitiveBase* Unsigned::plunder() && {
+	return new Unsigned(std::move(*this));
+}
+
+unsigned Unsigned::getData() const {
+	return data;
+}
+
+int Unsigned::compare(const Unsigned& other) const {
+	return data - other.data;
+}
+
+void Unsigned::operator>>(std::ostream& out) const {
+	out << "(Unsigned " << data << ")";
+}
+
+Unsigned::operator std::string() const {
+	return std::to_string(data);
+}
+
+} /* namespace primitive */
+
diff --git a/alib2data/src/primitive/Unsigned.h b/alib2data/src/primitive/Unsigned.h
new file mode 100644
index 0000000000000000000000000000000000000000..a6a11d6ad08f68d1b71065c8fd42823213dad1ac
--- /dev/null
+++ b/alib2data/src/primitive/Unsigned.h
@@ -0,0 +1,68 @@
+/*
+ * Unsigned.h
+ *
+ *  Created on: Mar 26, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef PRIMITIVE_UNSIGNED_H_
+#define PRIMITIVE_UNSIGNED_H_
+
+#include <ostream>
+
+#include "PrimitiveBase.h"
+
+namespace primitive {
+
+/**
+ * Represents symbol in an alphabet.
+ */
+class Unsigned : public std::acceptor<Unsigned, VisitablePrimitiveBase, std::acceptor<Unsigned, alib::VisitableObjectBase, PrimitiveBase> > {
+protected:
+	unsigned data;
+
+public:
+	/**
+	 * Creates new symbol with given name.
+	 * @param symbol name of the symbol
+	 */
+	explicit Unsigned(unsigned data);
+
+	virtual PrimitiveBase* clone() const;
+
+	virtual PrimitiveBase* plunder() &&;
+
+	/**
+	 * @return name of the symbol
+	 */
+	unsigned getData() const;
+
+	virtual int compare(const ObjectBase& other) const {
+		return -other.compare(*this);
+	}
+
+	virtual int compare(const Unsigned& other) const;
+
+	virtual void operator>>(std::ostream&) const;
+
+	virtual operator std::string() const;
+
+	virtual int selfTypeId() const {
+		return typeId<Unsigned>();
+	}
+};
+
+} /* namespace primitive */
+
+namespace std {
+
+template<>
+struct compare<primitive::Unsigned> {
+	int operator()(const primitive::Unsigned& first, const primitive::Unsigned& second) const {
+		return first.compare(second);
+	}
+};
+
+} /* namespace std */
+
+#endif /* PRIMITIVE_UNSIGNED_H_ */