     println()
     
     println("//MARK: - SegueProtocol")
-    println("protocol SegueProtocol {")
-    println("    var identifier: String { get }")
+    println("public protocol SegueProtocol: Equatable {")
+    println("    var identifier: String? { get }")
+    println("}")
+    println()
+    
+    println("public func ==<T: SegueProtocol, U: SegueProtocol>(lhs: T, rhs: U) -> Bool {")
+    println("   return lhs.identifier == rhs.identifier")
     println("}")
     println()
     

                            println("            }")
                            println("        }")
                            println()
                            println("        var identifier: String { return self.description } ")
                            println("        var description: String { return self.rawValue }")
                            println("    }")
                            println()

        println("//MARK: - \(controllerType) extension")
        println("extension \(controllerType) {")
        println("    class var storyboardIdentifier:String? { return nil }")
        println("    func performSegue<T: SegueProtocol>(segue: T, sender: AnyObject?) {")
        println("       performSegueWithIdentifier(segue.identifier, sender: sender)")
        println("    }")
        println("}")
        println()
    }
	
	println("extension UIStoryboardSegue: SegueProtocol {")
	println("}")
	println()
    
    for storyboard in storyboards {
        storyboard.processStoryboard()
