Adding Depth First Search