add DepthFirst class