dfs, not tested, but should work