adding start point spreading with unvisited checking