Explode PropagationProcess in functions
In order to
In order to increase the comprehensibility of the source code.
In order to add more unit test for each part of propagation process