diff --git a/alib2data/src/graph/directed/DirectedGraph.cpp b/alib2data/src/graph/directed/DirectedGraph.cpp
index 7dce4428a6b3ebda38c35b35b6f3d77ea5ad713e..525826bcbf5697e670bc96712f2fe81bbccec7c9 100644
--- a/alib2data/src/graph/directed/DirectedGraph.cpp
+++ b/alib2data/src/graph/directed/DirectedGraph.cpp
@@ -102,7 +102,7 @@ bool DirectedGraph::addNode(const Node &node)
 	return impl->addNode(node);
 }
 
-bool DirectedGraph::addNode(const Node &node, const primitive::Primitive &value)
+bool DirectedGraph::addNode(const Node &node, int value)
 {
 	bool success = addNode(node);
 	if (success) {
@@ -125,7 +125,7 @@ bool DirectedGraph::addEdge(const DirectedEdge &edge)
 	return impl->addEdge(edge);
 }
 
-bool DirectedGraph::addEdge(const DirectedEdge &edge, const primitive::Primitive &value)
+bool DirectedGraph::addEdge(const DirectedEdge &edge, int value)
 {
 	bool success = addEdge(edge);
 	if (success) {
@@ -143,22 +143,22 @@ bool DirectedGraph::removeEdge(const DirectedEdge &edge)
 	return success;
 }
 
-primitive::Primitive DirectedGraph::getNodeValue(const Node &node) const
+int DirectedGraph::getNodeValue(const Node &node) const
 {
 	return nodeValues.at(node);
 }
 
-void DirectedGraph::setNodeValue(const Node &node, const primitive::Primitive &value)
+void DirectedGraph::setNodeValue(const Node &node, int value)
 {
 	nodeValues.insert({node, value});
 }
 
-primitive::Primitive DirectedGraph::getEdgeValue(const DirectedEdge &edge) const
+int DirectedGraph::getEdgeValue(const DirectedEdge &edge) const
 {
 	return edgeValues.at(edge);
 }
 
-void DirectedGraph::setEdgeValue(const DirectedEdge &edge, const primitive::Primitive &value)
+void DirectedGraph::setEdgeValue(const DirectedEdge &edge, int value)
 {
 	edgeValues.insert({edge, value});
 }
diff --git a/alib2data/src/graph/directed/DirectedGraph.h b/alib2data/src/graph/directed/DirectedGraph.h
index 3422c1135e20aad629402310e62b7d97afdeba01..306605437b3e74807a256a854e14e1af4e42f6b1 100644
--- a/alib2data/src/graph/directed/DirectedGraph.h
+++ b/alib2data/src/graph/directed/DirectedGraph.h
@@ -9,8 +9,6 @@
 #include "../common/Node.h"
 #include "DirectedEdge.h"
 
-#include "../../primitive/Primitive.h"
-
 namespace graph {
 
 class IDirectedGraph;
@@ -41,18 +39,18 @@ public:
 	std::set<DirectedEdge> neighborEdges(const Node &node) const;
 
 	bool addNode(const Node &node);
-	bool addNode(const Node &node, const primitive::Primitive &value);
+	bool addNode(const Node &node, int value);
 	bool removeNode(const Node &node);
 
 	bool addEdge(const DirectedEdge &edge);
-	bool addEdge(const DirectedEdge &edge, const primitive::Primitive &value);
+	bool addEdge(const DirectedEdge &edge, int value);
 	bool removeEdge(const DirectedEdge &edge);
 
-	primitive::Primitive getNodeValue(const Node &node) const;
-	void setNodeValue(const Node &node, const primitive::Primitive &value);
+	int getNodeValue(const Node &node) const;
+	void setNodeValue(const Node &node, int value);
 
-	primitive::Primitive getEdgeValue(const DirectedEdge &edge) const;
-	void setEdgeValue(const DirectedEdge &edge, const primitive::Primitive &value);
+	int getEdgeValue(const DirectedEdge &edge) const;
+	void setEdgeValue(const DirectedEdge &edge, int value);
 
 	int compare(const ObjectBase &other) const override
 	{
@@ -76,8 +74,8 @@ private:
 	REPRESENTATION representation;
 	IDirectedGraph *impl;
 
-	std::unordered_map<Node, primitive::Primitive> nodeValues;
-	std::unordered_map<DirectedEdge, primitive::Primitive> edgeValues;
+	std::unordered_map<Node, int> nodeValues;
+	std::unordered_map<DirectedEdge, int> edgeValues;
 };
 
 } // namespace graph
diff --git a/alib2data/src/graph/undirected/UndirectedGraph.cpp b/alib2data/src/graph/undirected/UndirectedGraph.cpp
index deb0eb13a15682954f2b256dbc14fa84ac449740..bf0d409aa9eda1fe41ff4bc2868c63eedc865d50 100644
--- a/alib2data/src/graph/undirected/UndirectedGraph.cpp
+++ b/alib2data/src/graph/undirected/UndirectedGraph.cpp
@@ -102,7 +102,7 @@ bool UndirectedGraph::addNode(const Node &node)
 	return impl->addNode(node);
 }
 
-bool UndirectedGraph::addNode(const Node &node, const primitive::Primitive &value)
+bool UndirectedGraph::addNode(const Node &node, int value)
 {
 	bool success = addNode(node);
 	if (success) {
@@ -125,7 +125,7 @@ bool UndirectedGraph::addEdge(const UndirectedEdge &edge)
 	return impl->addEdge(edge);
 }
 
-bool UndirectedGraph::addEdge(const UndirectedEdge &edge, const primitive::Primitive &value)
+bool UndirectedGraph::addEdge(const UndirectedEdge &edge, int value)
 {
 	bool success = addEdge(edge);
 	if (success) {
@@ -143,22 +143,22 @@ bool UndirectedGraph::removeEdge(const UndirectedEdge &edge)
 	return success;
 }
 
-primitive::Primitive UndirectedGraph::getNodeValue(const Node &node) const
+int UndirectedGraph::getNodeValue(const Node &node) const
 {
 	return nodeValues.at(node);
 }
 
-void UndirectedGraph::setNodeValue(const Node &node, const primitive::Primitive &value)
+void UndirectedGraph::setNodeValue(const Node &node, int value)
 {
 	nodeValues.insert({node, value});
 }
 
-primitive::Primitive UndirectedGraph::getEdgeValue(const UndirectedEdge &edge) const
+int UndirectedGraph::getEdgeValue(const UndirectedEdge &edge) const
 {
 	return edgeValues.at(edge);
 }
 
-void UndirectedGraph::setEdgeValue(const UndirectedEdge &edge, const primitive::Primitive &value)
+void UndirectedGraph::setEdgeValue(const UndirectedEdge &edge, int value)
 {
 	edgeValues.insert({edge, value});
 }
diff --git a/alib2data/src/graph/undirected/UndirectedGraph.h b/alib2data/src/graph/undirected/UndirectedGraph.h
index 1eaf3433e382aa0f5122653b5455530c9880a4bd..ed6cdc68ae47497fc07447d4b2afeb6a251dc9a1 100644
--- a/alib2data/src/graph/undirected/UndirectedGraph.h
+++ b/alib2data/src/graph/undirected/UndirectedGraph.h
@@ -9,8 +9,6 @@
 #include "../common/Node.h"
 #include "UndirectedEdge.h"
 
-#include "../../primitive/Primitive.h"
-
 namespace graph {
 
 class IUndirectedGraph;
@@ -41,18 +39,18 @@ public:
 	std::set<UndirectedEdge> neighborEdges(const Node &node) const;
 
 	bool addNode(const Node &node);
-	bool addNode(const Node &node, const primitive::Primitive &value);
+	bool addNode(const Node &node, int value);
 	bool removeNode(const Node &node);
 
 	bool addEdge(const UndirectedEdge &edge);
-	bool addEdge(const UndirectedEdge &edge, const primitive::Primitive &value);
+	bool addEdge(const UndirectedEdge &edge, int value);
 	bool removeEdge(const UndirectedEdge &edge);
 
-	primitive::Primitive getNodeValue(const Node &node) const;
-	void setNodeValue(const Node &node, const primitive::Primitive &value);
+	int getNodeValue(const Node &node) const;
+	void setNodeValue(const Node &node, int value);
 
-	primitive::Primitive getEdgeValue(const UndirectedEdge &edge) const;
-	void setEdgeValue(const UndirectedEdge &edge, const primitive::Primitive &value);
+	int getEdgeValue(const UndirectedEdge &edge) const;
+	void setEdgeValue(const UndirectedEdge &edge, int value);
 
 	int compare(const ObjectBase &other) const override
 	{
@@ -76,8 +74,8 @@ private:
 	REPRESENTATION representation;
 	IUndirectedGraph *impl;
 
-	std::unordered_map<Node, primitive::Primitive> nodeValues;
-	std::unordered_map<UndirectedEdge, primitive::Primitive> edgeValues;
+	std::unordered_map<Node, int> nodeValues;
+	std::unordered_map<UndirectedEdge, int> edgeValues;
 };
 
 } // namespace graph