kpvs: move generic descent to separate module.