name change: "FunctionChain" to "CollectionFunctionChain"
divide and conquer algorithm