             didChangeValue(forKey: "isFinished")
         }
     }
-    
+
     /// Complete the operation
     ///
     /// This will result in the appropriate KVN of isFinished and isExecuting
     public func completeOperation() {
-        if isExecuting { _executing = false }
-        if !isFinished { _finished = true }
-    }
-    
+        if isExecuting { isExecuting = false }
+        if !isFinished { isFinished = true }
+    }
+
     override public func start() {
         if isCancelled {
-            _finished = true
+            isFinished = true
             return
         }
-        
-        _executing = true
-        
+
+        isExecuting = true
+
         main()
     }
-    
+
     override public func main() {
         fatalError("subclasses must override `main`")
     }
 }
 #else
 public class AsynchronousOperation : NSOperation {
-    
+
     override public var asynchronous: Bool { return true }
-    
+
     private let stateLock = NSLock()
-    
+
     private var _executing: Bool = false
     override private(set) public var executing: Bool {
         get {

            didChangeValueForKey("isFinished")
        }
    }
    
    /// Complete the operation
    ///
    /// This will result in the appropriate KVN of isFinished and isExecuting
    
    public func completeOperation() {
        if executing {
            executing = false
        }
        
        if !finished {
            finished = true
        }
    }
    
    override public func start() {
        if cancelled {
            finished = true
            return
        }
        
        executing = true
        
        main()
    }
    
    override public func main() {
        fatalError("subclasses must override `main`")
    }

#endif

extension NSLock {

    /// Perform closure within lock.
    ///
    /// An extension to `NSLock` to simplify executing critical code.
    ///
    /// - parameter block: The closure to be performed.

    func withCriticalScope<T>( block: (Void) -> T) -> T {
        lock()
        let value = block()
