         assert(array.count == 3, "Should be 3 collections in 2018")
         wondersCount = array.reduce(0) { $0 + $1.wonders.count }
         finalistsCount = array.reduce(0) { $0 + $1.finalists.count }
+        assert(wondersCount == 7 + 7 + 7, "Should be 21 wonders in 2018")
+        assert(finalistsCount == 14 + 21 + 21, "Should be 56 finalists in 2018")
+        return array
+    }()
+
+    struct Visit: Codable {
+        let wonder: Int?
+        let whs: Int?
+        let twhs: Int?
+        let visit: URL?
+        let stay: URL?
+        let eat: URL?
+    }
+    lazy var visits: [Visit] = {
+        let path = Bundle.main.path(forResource: "visits", ofType: "json")
+        var array: [Visit] = []
+        do {
+            let data = try Data(contentsOf: URL(fileURLWithPath: path!))
+            array = try JSONDecoder().decode([Visit].self, from: data)
+        } catch let jsonErr {
+            print("Error decoding visits", jsonErr)
+        }
+        let wonderVisits = array.compactMap({$0.wonder})
         assert(wondersCount == 7 + 7 + 7, "Should be 21 wonders in 2018")
         assert(finalistsCount == 14 + 21 + 21, "Should be 56 finalists in 2018")
         return array

        let wondersStart = NSAttributedString(string: "<p dir=\"ltr\">" + (inItalic ? "<i>" : ""))
        output.textStorage?.append(wondersStart)

        #if TODO_IMPLEMENT_VISITED
        //- prefix with mark
        //- follow with Visit
        #endif
        for wonder in wonders {
            let wonderLine = NSAttributedString(string: """
                <a href="\(wonder.url)">\(wonder.title)</a><br />\n
                """)
            output.textStorage?.append(wonderLine)
        }


    }

    func writeFooter(for type: Document) {
        assert(wondersVisited == 16, "Should be 16 wonders visited (2018.05.05)")
        assert(finalistsVisited == 40, "Should be 40 finalists visited (2018.05.05)")

        let wondersPercent = String(format: "%.1f", Float(wondersVisited) / Float(wondersCount) * 100)
        let finalistsPercent = String(format: "%.1f", Float(finalistsVisited) / Float(finalistsCount) * 100)

        let total = wondersCount + finalistsCount
        let totalVisits = wondersVisited + finalistsVisited
        let totalPercent = String(format: "%.1f", Float(totalVisits) / Float(total) * 100)
        let textFooter = NSAttributedString(string: """
            <p dir="ltr">Wonders: \(wondersVisited)/\(wondersCount) (\(wondersPercent)%) — Finalists: \(finalistsVisited)/\(finalistsCount) (\(finalistsPercent)%) — TOTAL: \(totalVisits)/\(total) (\(totalPercent)%)</p>\n
            """)
        output.textStorage?.append(textFooter)

        if type == .html {
