todo: recursive directory search