             var elements: [Element] = []
             
             dispatchQueue.sync {
-                elements = internalElements
+                elements.append(contentsOf: internalElements)
             }
             
             return elements
         }
     }
     
+    
+    /// Resets the SafeArray. Removes all current elements, and adds all the specified elements
+    ///
+    /// - Parameter elements: Elements to add to SafeArray
     public mutating func reset(withElements elements: [Element]) {
         
         dispatchQueue.sync {

public struct SafeArray<Element> {
    
    // MARK: - Properties 
    fileprivate lazy var internalElements = Array<Element>()
    fileprivate lazy var dispatchQueue: DispatchQueue = DispatchQueue(label: "SafeArray queue")
    
    /// Initializer for the SafeArray type
    ///

        return results
    }
    
    
    /// Filter method which returns an Array containing elements which should be included
    ///
    /// - Parameter isIncluded: Closure used to determine if an element should be included in returned Array
    /// - Returns: Array of filtered elements
    /// - Throws: Possible Throw
    public mutating func filter(_ isIncluded: (Element) throws -> Bool) rethrows -> [Element] {
        
        var results: [Element] = []
        
        try dispatchQueue.sync {
