Index: /reasoner/reasoner.tex
===================================================================
--- /reasoner/reasoner.tex	(revision 117)
+++ /reasoner/reasoner.tex	(revision 118)
@@ -1156,7 +1156,5 @@
       $val_n \assng value(v)$\;
       \If{$val_n \neq val_o$} {
-	$rescheduleConstraintValue(v, v, true)$\;
-	$rescheduleCompoundValue(v, val_o)$\;
-	$rescheduleContainerValue(v, val_o)$ \MISSING{!}\;
+	$rescheduleValueChange(v, v, true)$\;
           \If{$isContainer(v)$} {
     	    $createContainerValueConstraints(val_n, createParentEx(v), \undef, parent(decl(v)), v)$ \MISSING{!}\;
@@ -1175,5 +1173,22 @@
 \begin{algorithm}[H]
   \SetAlgoLined
-  \KwIn{decision variable $v_p$, decision variable $v$, clear flag $clear$}
+  \KwIn{parent variable $v_p$, decision variable $v$, old value $val_o$, clear flag $clear$}
+
+  $t_n \assng type(value(v)))$\;
+        \uIf{$isConstraint(t_c)$} {
+                $rescheduleConstraintValue(v_p, v, clear)$\;
+         } \uElseIf{$isCompound(t_c)$}{
+               $rescheduleCompoundValue(v, val_o)$\;
+         } \uElseIf{$isContainer(t_c)$}{
+              $rescheduleContainerValue(v, val_o)$\;
+         }
+
+  \caption{Reschedule a value change (\IVML{rescheduleValueChange}).}\label{algContainerValue}
+\end{algorithm}
+
+
+\begin{algorithm}[H]
+  \SetAlgoLined
+  \KwIn{parent variable $v_p$, decision variable $v$, clear flag $clear$}
   \KwData{scope assignments $\scopeAssignments$, relevant constraints $\relevantConstraintsPerType$ and $\relevantConstraintVariables$}
 
@@ -1193,5 +1208,5 @@
        }
    }
- \caption{Rescheduling a constraint value (\IVML{rescheduleConstraintValue}).}\label{algRescheduleConstraintValue}
+ \caption{Reschedule a constraint value (\IVML{rescheduleConstraintValue}).}\label{algRescheduleConstraintValue}
 \end{algorithm}
 
@@ -1204,14 +1219,9 @@
       \ForAll{$s\iterAssng slots(value(v))$}{
           \If{$value(s) \neq \undef$}{
- 	    $rescheduleConstraintValue(s, s, true)$\;
-              $rescheduleCompoundValue(s, value(v))$\;
-              \If{$isContainer(value(s))$}{
-                  $ex_p \assng createParentExpression(v)$\;
-	       $rescheduleContainerValue(val_n, ex_p, \undef, parent(decl(v)), s)$ \MISSING{!}\;
-              }
+               $rescheduleValueChange(s, s, value(s), true);$\;
            }
       }
   }
- \caption{Rescheduling a compound value (\IVML{rescheduleCompoundValue}).}\label{algCompoundValue}
+ \caption{Reschedule a compound value (\IVML{rescheduleCompoundValue}).}\label{algCompoundValue}
 \end{algorithm}
 
@@ -1221,5 +1231,14 @@
   \KwData{scope assignments $\scopeAssignments$, relevant constraints $\relevantConstraintsPerType$ and $\relevantConstraintVariables$}
 
-  \caption{Rescheduling a container value (\IVML{rescheduleContainerValue}).}\label{algContainerValue}
+  $val_n \assng value(v))$\;
+  \If{$isContainer(type(val_n)) \wedge isContainer(type(val_o))$}{
+        $first \assng true$\;
+        \ForAll{$c \iterAssng elements(val_n), o \iterAssng elements(val_o)$} {
+                $rescheduleValueChange(v, c, o, first)$\;
+                $first \assng false$\;
+         }
+   }
+
+  \caption{Reschedule a container value (\IVML{rescheduleContainerValue}).}\label{algContainerValue}
 \end{algorithm}
 
