generalized ICP