ddd
add rank function