Addtion to Depth First Search