diff --git a/src/main/java/fucoin/actions/aggregation/AggregationContext.java b/src/main/java/fucoin/actions/aggregation/AggregationContext.java
index df216a15ec21d70c366cc2c3e620cb6db0035df3..43326be35442f9f66cd7e8b51290d0d8a07aaf5a 100644
--- a/src/main/java/fucoin/actions/aggregation/AggregationContext.java
+++ b/src/main/java/fucoin/actions/aggregation/AggregationContext.java
@@ -39,21 +39,26 @@ public class AggregationContext implements Serializable {
 
 	public AggregationContext aggregate(AggregationContext neighborContext) {
 		double[] aggregatedValues = getFunction().apply(neighborContext.getValues(), getValues());
-		AggregationContext aggregatedContext = new AggregationContextBuilder(getFunction(), getValueExtractor(), getAltValueExtractor(),
-				aggregatedValues, resultExtractor)
-						.setCurrentExchanges(getCurrentExchanges() + 1)
-						.setMaxExchanges(getMaxExchanges())
-						.setUuid(getUuid())
-						.build();
+		AggregationContext aggregatedContext = new AggregationContextBuilder(getFunction(), aggregatedValues)
+				.setCurrentExchanges(getCurrentExchanges() + 1)
+				.setValueExtractor(getValueExtractor())
+				.setValueAltExtractor(getValueAltExtractor())
+				.setMaxExchanges(getMaxExchanges())
+				.setUuid(getUuid())
+				.setResultExtractor(resultExtractor)
+				.build();
 		System.out.println("Aggregation: " + Arrays.toString(getValues()) + " + " + Arrays.toString(neighborContext.getValues()) + " = " + aggregatedValues);
 		return aggregatedContext;
 	}
 
 	public AggregationContext initContext(AbstractWallet wallet, boolean useValueExtractor) {
-		double[] initValues = useValueExtractor ? getValueExtractor().apply(wallet) : getAltValueExtractor().apply(wallet);
-		AggregationContext initContext = new AggregationContextBuilder(getFunction(), getValueExtractor(), getAltValueExtractor(), initValues, resultExtractor)
+		double[] initValues = useValueExtractor ? getValueExtractor().apply(wallet) : getValueAltExtractor().apply(wallet);
+		AggregationContext initContext = new AggregationContextBuilder(getFunction(), initValues)
 				.setMaxExchanges(getMaxExchanges())
+				.setValueExtractor(getValueExtractor())
+				.setValueAltExtractor(getValueAltExtractor())
 				.setUuid(getUuid())
+				.setResultExtractor(resultExtractor)
 				.build();
 		return initContext;
 	}
@@ -85,7 +90,7 @@ public class AggregationContext implements Serializable {
 		return valueExtractor;
 	}
 	
-	private Function<AbstractWallet, double[]> getAltValueExtractor() {
+	private Function<AbstractWallet, double[]> getValueAltExtractor() {
 		return valueAltExtractor;
 	}
 
@@ -104,23 +109,23 @@ public class AggregationContext implements Serializable {
 	public static class AggregationContextBuilder {
 		private final AggregationFunction function;
 		private final double[] values;
-		private final Function<AbstractWallet, double[]> valueExtractor;
-		private final Function<AbstractWallet, double[]> valueAltExtractor;
+		private Function<AbstractWallet, double[]> valueExtractor;
+		private Function<AbstractWallet, double[]> valueAltExtractor;
 		private int currentExchanges;
 		private int maxExchanges;
 		private UUID uuid;
 		private Function<double[], Double> resultExtractor;
 
-		public AggregationContextBuilder(AggregationFunction function, Function<AbstractWallet, double[]> valueExtractor, Function<AbstractWallet, double[]> valueAltExtractor,
-				double[] values, Function<double[], Double> resultExtractor) {
+		public AggregationContextBuilder(AggregationFunction function, double[] values) {
 			this.function = function;
-			this.valueExtractor = valueExtractor;
-			this.valueAltExtractor = valueAltExtractor;
+			this.valueExtractor = wallet -> new double[] { wallet.getAmount() };
+			this.valueAltExtractor = this.valueExtractor;
 			this.values = values;
+
 			this.currentExchanges = 0;
 			this.maxExchanges = 20;
 			this.uuid = UUID.randomUUID();
-			this.resultExtractor = resultExtractor;
+			this.resultExtractor = valuesArray -> valuesArray[0];
 		}
 
 		public AggregationContextBuilder setCurrentExchanges(int currentExchanges) {
@@ -138,6 +143,21 @@ public class AggregationContext implements Serializable {
 			return this;
 		}
 
+		public AggregationContextBuilder setResultExtractor(Function<double[], Double> resultExtractor) {
+			this.resultExtractor = resultExtractor;
+			return this;
+		}
+		
+		public AggregationContextBuilder setValueExtractor(Function<AbstractWallet, double[]> valueExtractor) {
+			this.valueExtractor = valueExtractor;
+			return this;
+		}
+		
+		public AggregationContextBuilder setValueAltExtractor(Function<AbstractWallet, double[]> valueAltExtractor) {
+			this.valueAltExtractor = valueAltExtractor;
+			return this;
+		}
+		
 		public AggregationContext build() {
 			return new AggregationContext(function, valueExtractor, valueAltExtractor, values, currentExchanges, maxExchanges, uuid, resultExtractor);
 		}