refactored
topk must be same now:(