move TransitiveClosure from signal-collect, re-add Ranker