optimize rank()