diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
index 5b5b0a7d40338574b3e18dea7daeabef4898d41a..f4eb81e227df738089955c8f761997a215e687fc 100644
--- a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
+++ b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
@@ -61,9 +61,11 @@ bool ExactPatternMatch::matchHelper ( const tree::RankedNode & subject, const tr
 	if ( nonlinearVariables.count ( pattern.getSymbol ( ) ) ) {
 		auto setting = variablesSetting.find ( pattern.getSymbol ( ) );
 
-		if ( ( setting != variablesSetting.end ( ) ) && ( repeats.getSymbol ( ).getSymbol ( ) != setting->second ) ) return false;
+		if ( setting != variablesSetting.end ( ) ) return repeats.getSymbol ( ).getSymbol ( ) == setting->second;
 
-		if ( setting == variablesSetting.end ( ) ) variablesSetting.insert ( std::make_pair ( pattern.getSymbol ( ), repeats.getSymbol ( ).getSymbol ( ) ) );
+		variablesSetting.insert ( std::make_pair ( pattern.getSymbol ( ), repeats.getSymbol ( ).getSymbol ( ) ) );
+
+		return true;
 	}
 
 	if ( subject.getSymbol ( ) != pattern.getSymbol ( ) ) return false;