working recursive crawl