 
     func addTransaction(t: (Processor, NSKeyValueChange, Int)) {
 
-        dispatch_async(dispatch_get_main_queue()) {
+        async_main_safe {
             if self.displayLink == nil {
                 self.displayLink = CADisplayLink(target: self, selector: "update")
                 self.displayLink?.frameInterval = 20

import UIKit


protocol TableElementProtocol: NSObjectProtocol {

    class var identifier: String { get }


    private var animating: Bool = true


    public required init(responder: UIResponder?, sections: [TableSection]) {
        self.responder = responder
        
        super.init()

        for section in sections {
            section.controller = self
        }
        self.sections = sections
    }
    
    /**
    :param: responder <#responder description#>
    :param: section   <#section description#>
    */
    public convenience init(responder: UIResponder?, section: TableSection = TableSection()) {
        self.init(responder: responder, sections: [section])
    }

    deinit {
