diff --git a/alib2common/src/PrimitiveRegistrator.cpp b/alib2common/src/PrimitiveRegistrator.cpp
index 43bba9d747a3b73a4d5def1f34de6ac74bdda45d..11f7d761309359e5b0fd2689f1dc6a92cb3f04dd 100644
--- a/alib2common/src/PrimitiveRegistrator.cpp
+++ b/alib2common/src/PrimitiveRegistrator.cpp
@@ -17,6 +17,14 @@
 namespace {
 
 class PrimitiveRegistrator {
+	static const ext::set < object::Object > & denormalizeSetObject ( const object::Object & o ) {
+		const object::AnyObjectBase & data = o.getData ( );
+		const object::AnyObject < ext::set < object::Object > > * innerData = dynamic_cast < const object::AnyObject < ext::set < object::Object > > * > ( & data );
+		if ( innerData )
+			return innerData->getData ( );
+		throw std::invalid_argument ( "Casted object does not contain data of type " + ext::to_string < ext::set < object::Object > > ( ) + "." );
+	}
+
 public:
 	PrimitiveRegistrator ( ) {
 		abstraction::CastRegistry::registerCast < double, int > ( );
@@ -37,6 +45,8 @@ public:
 
 		abstraction::CastRegistry::registerCast < long, int > ( "long", ext::to_string < int > ( ) );
 
+		abstraction::CastRegistry::registerCastAlgorithm < const ext::set < object::Object > &, const object::Object & > ( "SetOfObjects", ext::to_string < object::Object > ( ), denormalizeSetObject, true );
+
 		abstraction::ContainerRegistry::registerSet < int > ( );
 
 		abstraction::ValuePrinterRegistry::registerValuePrinter < int > ( );