recursive find method