 	*/
 	
 	public func hierholzer() -> [Int]? {
-        guard noEmtpyVertices else { return nil }
         let unEvenVertices = self.unEvenVertices(directed: directed)
 		guard unEvenVertices == 0 || unEvenVertices == 2 else { return nil }
         guard var startv = vertices.first else { return nil }

                    subtour.append(next)
                    current = next
                    
                    // print("\tdid visit \(end)", remainingEdges, visited)
                    
                } while !remainingEdges.isEmpty && (current != end || current != start)
                tours.append(subtour)

            return tours
        }
        
        guard var tours = hierholzer_rec(), tours.count > 0 else { return nil }
        // print("tries to join \(tours)")
        var tour = tours.remove(at: 0)
        
        var didNotWork = 0
        // print("tours", tours, "tour", tour)
        while !tours.isEmpty {
            guard didNotWork < tours.count else { /*print("failed to assemble");*/ return nil }
            var t = tours.first!
            // print(tours, tour, t)
            if t[t.startIndex] == t[t.endIndex - 1] {
                if var index = tour.indices.first(where: { t.contains(tour[$0]) }) {
                    let i = t.indices.first(where: { tour[index] == t[$0] })!
