 
 struct Port {
     var port: Int = 0
+    
+    enum State {
+        case Unknown
+        case Open
+        case Closed
+        //... Blocked, whatever
+    }
+    
+    var state: State = .Unknown
 }
 
 

    }
    
    func childByID(childID: Int) -> Node? {
        for c in self.children {
            if c.id == childID {
                return c
            }
            if let n = c.childByID(childID) {
                return n
            }

//MARK: - public
extension Node {
    func openPorts() -> [Port] {
        return self.ports.filter({$0.state == .Open})
    }
    
    func isLeaf() -> Bool {
