some optimisation done: the dependency list on the process() recursive function is now unique (no repeated entries), resulting in deprecating the removeRepeated() method and using less memory