seperate the find_neighbor