add test
move to traverse
use selecollide