rework DirIter api to be more compact to use