new decompositional algo