 private let _contextSpecificName        = UnsafePointer<Void>((_contextSpecificNameString as NSString).UTF8String);
 
 ///
+/// Stores the binding context for the current queue
+///
+private class QueueBindingContext {
+    var context: BindingContext;
+    
+    init(context: BindingContext) {
+        self.context = context;
+    }
+}
+
+///
 /// The binding context is used to keep track of what bindings are being accessed
 ///
 public class BindingContext {

    private init() {
    }
    
    ///
    /// Performs the specified action with both this context and the specified new context
    ///
    internal func usingContext(action: () -> (), newContext: BindingContext) {
        // TODO: apply the new context as well
        action();
    }
    
    ///
    /// Retrieves the binding context for the current queue (or nil if there isn't one)
    ///
    public static var current: BindingContext? {
        get {
            // Get the context pointer from the queue
            let unmanagedContext = dispatch_get_specific(_contextSpecificName);

            }
            
            // Convert from the unmanaged value
            return Unmanaged<QueueBindingContext>.fromOpaque(COpaquePointer(unmanagedContext)).takeUnretainedValue();
        }
    }
    
    ///
    /// Retrieves the binding context for the current queue (or nil if there isn't one)
    ///
    public static var current: BindingContext? {
        get {
            return currentStorage?.context;
        }
    }
    
