add change_source_rank function