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

    
    private static var privateDataPool = JSONObject()
    
    private func initialize() {
        poolData()
    }
    
    private func poolData() {
        
        //Pool top-level data
        if let data = json[Key.data] as? JSONObject {
            Treasure.pool([data])
        } else if let data = json[Key.data] as? [JSONObject] {
            Treasure.pool(data)
        }
        
        //Pool included data
        if let includedData = json[Key.included] as? [JSONObject] {
            Treasure.pool(includedData)
        }
    }

    
    /// 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
