breadth first search and tests
add progress indicator; add output filename option