accept directories, new file filter

Still could use a bit of cleanup and i only partially tested it but I think it works. Will want to create an output class separately so that we arent printing while testing is happening and the error reporting could be a bit better but it's a start.