     
     private static var privateDataPool = JSONObject()
     
+    private static let concurrentPoolQueue = DispatchQueue(label: "com.treasure.poolQueue", attributes: .concurrent)
+    
     private func initialize() {
         poolData()
     }
     
     private func poolData() {
-        
         //Pool top-level data
-        if let data = json[Key.data] as? JSONObject {
+        if let data = self.json[Key.data] as? JSONObject {
             Treasure.pool([data])
-        } else if let data = json[Key.data] as? [JSONObject] {
+        } else if let data = self.json[Key.data] as? [JSONObject] {
             Treasure.pool(data)
         }
-        
+            
         //Pool included data
-        if let includedData = json[Key.included] as? [JSONObject] {
+        if let includedData = self.json[Key.included] as? [JSONObject] {
             Treasure.pool(includedData)
         }
     }

    }
    
    public static func clearChest() {
        Treasure.privateDataPool.removeAll()
    }
    
    public static func chestData() -> Data? {
        return try? JSONSerialization.data(withJSONObject: Treasure.privateDataPool)
    }
    
    public static func store(_ data: Data) {

    
    /// The shared data pool of resources for the current lifecycle
    public static var chest: JSONObject {
        var poolCopy: JSONObject!
        
        Treasure.concurrentPoolQueue.sync {
            poolCopy = Treasure.privateDataPool
        }
        
        return poolCopy
    }
    
    /// The full json object received on initialization
