     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.
+    /// - Warning: 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.
+    /// - Warning: 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.

    return err_t(ERR_OK)
}

/// This is the IP stack that receives and outputs IP packets.
///
/// `outputBlock` and `delegate` should be set before any input.
/// Then call `receivedPacket()` when a new IP packet is read from the TUN interface.
///
/// There is a timer running internally. When the device is going to sleep (which means the timer will not fire for some time), then the timer must be paused by calling `suspendTimer()` and resumed by `resumeTimer` when the deivce wakes up.
/// - note: This class is thread-safe.
public class TSIPStack {
    /// The singleton stack instance that developer should use. The `init()` method is a private method, which means there will never be more than one IP stack running at the same time.
    public static var stack = TSIPStack()

    /**
     Resume the timer when the device is awoke.

     - Warning: Do not call this unless you suspend the timer, the timer starts automatically when the stack initializes.
     */
    public func resumeTimer() {
        dispatch_call {
