     let timer: dispatch_source_t
     let listenPCB: UnsafeMutablePointer<tcp_pcb>
 
+    /// When the IP stack decides to output some IP packets, this block is called.
+    /// - note: This should be set before any input.
     public var outputBlock: (([NSData], [NSNumber]) -> ())!
 
+    /// The delegate instance.
+    /// - note: Setting this variable is not protected in the GCD queue, So this shoule be set before any input and shoule never change afterwards.
     public weak var delegate: TSIPStackDelegate?
 
     // Since all we need is a mock interface, we just use the loopback interface provided by lwip.
-    // Do not need to add any interface.
+    // No need to add any interface.
     var interface: UnsafeMutablePointer<netif> {
         return netif_list
     }

}

/// This is the IP stack that receives and outputs IP packets.
public class TSIPStack {
    public static var stack = TSIPStack()

    // The whole stack is running in this dispatch queue.


/// The delegate that the developer should implement to handle what to do when a new TCP socket is connected.
public protocol TSIPStackDelegate: class {
    /**
     A new TCP socket is accepted. This means we received a new TCP packet containing SYN signal.

     - parameter sock: the socket object.
     */
    func didAcceptTCPSocket(sock: TSTCPSocket)
}

