diff --git a/alib2algo/src/regexp/simplify/RegExpOptimizeUnboundedPart.cxx b/alib2algo/src/regexp/simplify/RegExpOptimizeUnboundedPart.cxx
index 679e98d488f1c45b990e476f8e06cf513a7f3635..381fb320e5fd941af4c0922c66e0ecf22bfbbd44 100644
--- a/alib2algo/src/regexp/simplify/RegExpOptimizeUnboundedPart.cxx
+++ b/alib2algo/src/regexp/simplify/RegExpOptimizeUnboundedPart.cxx
@@ -92,7 +92,9 @@ UnboundedRegExpElement * RegExpOptimize::optimize( UnboundedRegExpConcatenation
 
 UnboundedRegExpElement * RegExpOptimize::optimize( UnboundedRegExpIteration const * const & node ) const
 {
-	UnboundedRegExpIteration* iter = new UnboundedRegExpIteration(* optimize( node->element ) );
+	UnboundedRegExpIteration* iter = new UnboundedRegExpIteration( UnboundedRegExpEmpty {} );
+	delete iter->element;
+	iter->element = optimize( node->element );
 
 	do
 	{
@@ -778,9 +780,13 @@ bool RegExpOptimize::V5( UnboundedRegExpAlternation * const & node ) const
 			delete tmpAY;
 
 			auto iterAY = find_if( node->elements.begin( ), node->elements.end( ), [ regexpAY ] ( UnboundedRegExpElement const * const & a ) -> bool{ return *a == *regexpAY; } );
+			delete regexpAY;
 			if( iterAY == node->elements.end( ) )
 			{
 				itC ++;
+				delete regexpA;
+				delete regexpY;
+
 				continue;
 			}
 
@@ -805,7 +811,6 @@ bool RegExpOptimize::V5( UnboundedRegExpAlternation * const & node ) const
 
 			delete regexpA;
 			delete regexpY;
-			delete regexpAY;
 
 			delete *itA;
 			itA = node->elements.erase( itA );
@@ -931,9 +936,13 @@ bool RegExpOptimize::V6( UnboundedRegExpAlternation * const & node ) const
 			delete tmpAY;
 
 			auto iterAY = find_if( node->elements.begin( ), node->elements.end( ), [ regexpAY ] ( UnboundedRegExpElement const * const & a ) -> bool{ return *a == *regexpAY; } );
+			delete regexpAY;
 			if( iterAY == node->elements.end( ) )
 			{
 				itC ++;
+
+				delete regexpA;
+				delete regexpY;
 				continue;
 			}
 
@@ -957,7 +966,6 @@ bool RegExpOptimize::V6( UnboundedRegExpAlternation * const & node ) const
 
 			delete regexpA;
 			delete regexpY;
-			delete regexpAY;
 
 			delete *itA;
 			itA = node->elements.erase( itA );