     }
     
 // MARK: Utilities
-// MARK: Utilities
-// MARK: Utilities
     
 // MARK: OS3DFrameConsumerProtocol
     func didCapturedFrame(image: UIImage, depthFrame: [Float])
     {
-        
+        var capturedFrame : OSBaseFrame = OSBaseFrame(image: image, depth: depthFrame);
+        self.startSingleFrameOperations(capturedFrame);
     }
 }

    case ContentLoading = "OSScannerManagerDidStartContentLoading"
    case ContentLoaded = "OSScannerManagerDidStartContentLoaded"
    case Scanning = "OSScannerManagerScaning"
}

class OSScannerManager : OS3DFrameConsumerProtocol

        self.startLoadingContent();
    }
    
// MARK: Publics
    
    func startSimulating()
    {
        switch (self.state)
        {
        case .Idle, .ContentLoading:
            print("warning: content is not loaded, first the content must be loaded.");
            break
        case .ContentLoaded:
            self.state = .Scanning;
            OSCameraFrameProviderSwift.sharedInstance.startSimulatingFrameCaptures();
            break
        case .Scanning:
            print("warning: scanning is in progress.");
            break
        case .ScanCompleted:
            print("warning: scanning is already completed.");
            break
        }
    }
    
// MARK: Utilities
    /**
    @param frame the frame that will be calibrated and put into the scanning process
    @abstract this methd is consist of single frame calibration and image surf feature extractions
    */
    func startSingleFrameOperations(frame : OSBaseFrame)
    {
        // calibrating the frame
        dispatch_semaphore_wait(self.calibrationSemaphore, DISPATCH_TIME_FOREVER);
        
        dispatch_semaphore_signal(self.calibrationSemaphore);
        
        // image feature extracting and
        dispatch_semaphore_wait(self.featureExtractionSemaphore, DISPATCH_TIME_FOREVER)
        
        dispatch_semaphore_signal(self.featureExtractionSemaphore);
    }
    
    func startConsecutiveFrameOperations()
    {
        
    }
    
// MARK: Privates
    
    func startLoadingContent()
    {
        OSTimer.tic();
        self.state = .ContentLoading;
        let contentLoadingGroup : dispatch_group_t = dispatch_group_create();
        
        dispatch_group_enter(contentLoadingGroup);
