finish recommend by cf
add routes function