diff --git a/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java b/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java
index 9602c645dd70f0a2edb3a9673c2ccc8bd9153dc8..aa7044ce45c15609d2e0c321d0a10aa7966b5573 100644
--- a/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java
+++ b/AMOEBA3/src/experiments/nDimensionsLaunchers/F_N_Manager.java
@@ -97,18 +97,21 @@ public class F_N_Manager implements StudiedSystem, Serializable{
 	public double model(double[] x) {
 		
 		/* Disc */
-		//return (y*y + x*x < spaceSize*spaceSize ) ? 2*x + y : 5*x - 8*y;
+		return (x[1]*x[1] + x[0]*x[0] < spaceSize*spaceSize ) ? model1() :  model2();
 		
 		/* Square */
 		//return (x[1] > -spaceSize && x[1] < spaceSize && x[0] < spaceSize && x[0] > -spaceSize) ? model1() : model2() ;
 		//return model1();
 		
 		/* Triangle */
-		return (x[1] > x[0]) ? model1() : model2();
+		//return (x[1] > x[0]) ? model1() : model2();
 		
 		/* Split */
 		//return ( x <= 0 ) ? 2*x + y : 5*x - 8*y;
 		
+		/* Exp */
+		
+		
 	}
 	
 	public double model(double x0, double x1) {
diff --git a/AMOEBA3/src/mas/agents/context/Context.java b/AMOEBA3/src/mas/agents/context/Context.java
index 339e3d1abe3759eba219c5766c01135fb0bb901c..9424712e20506d953a7e05f90e64a96788282bda 100644
--- a/AMOEBA3/src/mas/agents/context/Context.java
+++ b/AMOEBA3/src/mas/agents/context/Context.java
@@ -1189,7 +1189,18 @@ public void analyzeResults4(Head head, Context closestContextToOracle) {
 				
 				fusionAcomplished = false;
 	
-				if(this.sameModelAs(ctxt, world.getScheduler().getHeadAgent().getErrorAllowed()/10) ) {
+				double currentDistanceToOraclePrediction = this.getLocalModel().distance(this.getCurrentExperiment());
+				double otherContextDistanceToOraclePrediction = ctxt.getLocalModel().distance(ctxt.getCurrentExperiment());
+				
+				
+				
+	
+				
+				//if(this.sameModelAs(ctxt, world.getScheduler().getHeadAgent().getErrorAllowed()/10) ) {
+				if((currentDistanceToOraclePrediction<world.getScheduler().getHeadAgent().getDistanceToRegressionAllowed()) && (otherContextDistanceToOraclePrediction<world.getScheduler().getHeadAgent().getDistanceToRegressionAllowed())) {
+					
+					world.trace(new ArrayList<String>(Arrays.asList("currentDistanceToOraclePrediction",""+ currentDistanceToOraclePrediction,"otherContextDistanceToOraclePrediction",""+ otherContextDistanceToOraclePrediction))); 
+					
 					
 					for(Percept pct : ranges.keySet()) {
 						
@@ -1205,7 +1216,7 @@ public void analyzeResults4(Head head, Context closestContextToOracle) {
 									double lengthDifference = Math.abs(ranges.get(otherPct).getLenght() - ctxt.getRanges().get(otherPct).getLenght());
 									double centerDifference = Math.abs(ranges.get(otherPct).getCenter() - ctxt.getRanges().get(otherPct).getCenter());
 									world.trace(new ArrayList<String>(Arrays.asList(this.getName(),ctxt.getName(),otherPct.getName(), ""+lengthDifference,""+centerDifference, "LENGTH & CENTER DIFF", ""  + world.getMappingErrorAllowed())));
-									fusionTest = fusionTest && (lengthDifference < otherPct.getMappingErrorAllowed()) && (centerDifference< otherPct.getMappingErrorAllowed());
+									fusionTest = fusionTest && (lengthDifference < otherPct.getMappingErrorAllowed()/2) && (centerDifference< otherPct.getMappingErrorAllowed()/2);
 								}
 							}
 							
@@ -2766,12 +2777,12 @@ private Pair<Percept, Context> getPerceptForAdaptationWithOverlapingContext(Arra
 
 
 	public void NCSDetection_Uselessness() {
-//		for (Percept v : ranges.keySet()) {
-//			if (ranges.get(v).isTooSmall()){
-//				solveNCS_Uselessness();
-//				break;
-//			}
-//		}
+		for (Percept v : ranges.keySet()) {
+			if (ranges.get(v).isTooSmall()){
+				solveNCS_Uselessness();
+				break;
+			}
+		}
 		
 		
 //		if(!isDying) {
diff --git a/AMOEBA3/src/mas/agents/context/Range.java b/AMOEBA3/src/mas/agents/context/Range.java
index fd10a3984b2b2a72f1ec8cf91a65c2cffea74eb7..638ae87a5144bd947b90d0675529e55c722fe537 100644
--- a/AMOEBA3/src/mas/agents/context/Range.java
+++ b/AMOEBA3/src/mas/agents/context/Range.java
@@ -875,9 +875,17 @@ public class Range implements Serializable, Comparable, Cloneable {
 	public String toString() {
 		return ((start_inclu ? "[" : "]") + start + "," + end
 				+ (!end_inclu ? "[" : "]") + "  Current value : " + percept.getValue()
-				+ "  AVT_Start : " + AVT_deltaStart
-				+ "  AVT_End : " + AVT_deltaEnd );
+				+ "\n lastStartDirection : " + lastStartDirection
+				+ "\n lastEndDirection : " + lastEndDirection 
+				+ "\n startCriticality : " + startCriticality
+				+ "\n endCriticality : " + endCriticality
+				+ "\n startIncrement : " + startIncrement
+				+ "\n endIncrement : " + endIncrement
+
+				);
 	}
+	
+	
 
 	/**
 	 * Gets the context.
diff --git a/AMOEBA3/src/mas/agents/head/Head.java b/AMOEBA3/src/mas/agents/head/Head.java
index 49c488a44bf136a4c0ca789a505927ff2e6d62c0..162540f6b7b932286680faa3545df62cb74f7527 100644
--- a/AMOEBA3/src/mas/agents/head/Head.java
+++ b/AMOEBA3/src/mas/agents/head/Head.java
@@ -315,7 +315,7 @@ public class Head extends AbstractHead implements Cloneable{
 		create_New_ContextNCSExecutionTime = System.currentTimeMillis() - create_New_ContextNCSExecutionTime;
 		
 		overmappingNCSExecutionTime = System.currentTimeMillis();
-		//NCSDetection_Context_Overmapping();
+		NCSDetection_Context_Overmapping();
 		overmappingNCSExecutionTime = System.currentTimeMillis() - overmappingNCSExecutionTime;
 		
 		memoryCreationExecutionTime = System.currentTimeMillis();
@@ -992,7 +992,7 @@ public class Head extends AbstractHead implements Cloneable{
 		activatedContextsCopy.addAll(activatedContexts);
 		
 		for(Context ctxt : activatedContextsCopy) {
-			if(!ctxt.isDying()) {
+			if(!ctxt.isDying() && ctxt.getLocalModel().finishedFirstExperiments()) {
 				ctxt.NCSDetection_OverMapping();
 			}
 			
@@ -1037,13 +1037,17 @@ public class Head extends AbstractHead implements Cloneable{
 	
 	private void NCSDetection_ChildContext() {
 		
-		if(!bestContext.getLocalModel().finishedFirstExperiments() && firstContext && world.getScheduler().getTick()>0) {
-			bestContext.solveNCS_ChildContext();
-			
-			
+		if(bestContext!=null) {
+			if(!bestContext.getLocalModel().finishedFirstExperiments() && firstContext && world.getScheduler().getTick()>0 && !bestContext.isDying()) {
+				bestContext.solveNCS_ChildContext();
+				
+				
+			}
 		}
 		
 		
+		
+		
 	}
 	
 	private void selfAnalysationOfContexts() {