             return ResultOf(_stereogramImage!)
         }
         // Get the left and right images, loading them if they are not in cache.
-        if _leftImage == nil {
-            switch loadImage(.Left) {
-            case .Error(let error): return .Error(error)
-            case .Success(let result): _leftImage = result.value
-            }
-        }
-
-        if _rightImage == nil {
-            switch loadImage(.Right) {
-            case .Error(let error): return .Error(error)
-            case .Success(let result): _rightImage = result.value
-            }
-        }
-        
+        var leftImage: UIImage?
+        switch loadImage(.Left) {
+        case .Error(let error): return .Error(error)
+        case .Success(let result): leftImage = result.value
+        }
+        
+        var rightImage: UIImage?
+        switch loadImage(.Right) {
+        case .Error(let error): return .Error(error)
+        case .Success(let result): rightImage = result.value
+        }
+    
         // Create the stereogram image, cache it and return it.
-        if let left = _leftImage, right = _rightImage {
+        assert(leftImage != nil && rightImage != nil, "Failed to load images: Left <\(leftImage)> or Right <\(rightImage)>")
+        if let left = leftImage, right = rightImage {
             
             switch (self.viewingMethod) {
             case .Crosseyed:

    private var _propertyList: PropertyDict
    
    /// Cached images in memory. Free these if needed.
    private var _leftImage: UIImage?, _rightImage: UIImage?, _stereogramImage: UIImage?, _thumbnailImage: UIImage?
    
    //MARK: Private methods
    

        if success {
            _thumbnailImage = nil
            _stereogramImage = nil
            return .Success()
        }
        return .Error(error!)
