private async Task<object> CreateTrackingHandler(dynamic input)
        {
			Logger("Start Image Tracking");
            trackingHandlerCallback = (Func<object, Task<object>>)input.callback;
            if (trackingHandlerCallback == null)
            {
                throw new Exception("no callback function is provided");
            }
			
			IPcMoment moment = await PcLink.CaptureMomentAsync();
			
			// Extract the top-level picture and child images.
			var picture = await PcLink.ExtractPictureAsync(moment);

			// Extract the top-level outline and child outlines.
			var outline = await PcLink.ExtractOutlineAsync(moment);
			
			//var combolist = new List<TrackingHandlerDataObject>();
			List<PcTrainingImage> images = new List<PcTrainingImage>();
			Logger(picture.Children.Count().ToString());
			for (int i = 0; i < picture.Children.Count(); i++)
			{
				PcTrainingImage trainingImage = new PcTrainingImage("Object " + i, picture.Children.ElementAt(i).Image);
				images.Add(trainingImage);
			}

			// Create the object-tracking handler.
			trackingHandler = PcLink.CreateObjectTrackingHandler(images);
			
			// Subscribe to object-tracking events.
			trackingHandler.TrackUpdated += _imagesTrackHandler_TrackUpdated;
			Logger("Before start");
			// Start object tracking.
			trackingHandler.StartAsync().Wait();
            Logger("After start");
            
            return true;
        }
		private async Task<object> StopImageTracking()
        {
			Logger("Stopping Image Tracking");

            if (trackingHandler != null)
            {
                await trackingHandler.StopAsync();

                trackingHandler.TrackUpdated -= _imagesTrackHandler_TrackUpdated;
                trackingHandler.Dispose();
                trackingHandler = null;
                return true;
            }
            else
            {
                throw new Exception("Tracking was not started.");
            }
        }
		private async Task<object> StartTracking(dynamic input)
        {
			trackingHandlerCallback = (Func<object, Task<object>>)input.callback;
            if (trackingHandlerCallback == null)
            {
                throw new Exception("no callback function is provided");
            }
			trackingHandler = PcLink.CreateObjectTrackingHandler(trainingImages);
			
			
			// Subscribe to object-tracking events.
			trackingHandler.TrackUpdated += _imagesTrackHandler_TrackUpdated;
			Logger("Before start");
			// Start object tracking.
			trackingHandler.StartAsync().Wait();
            Logger("After start");
			return true;
		}