async void Start()
        {
            // Initialize camera and camera parameters
            _captureResolution = PhotoCapture.SupportedResolutions.OrderBy((res) => res.width * res.height).First();

            _cameraPara = new CameraParameters();
            _cameraPara.hologramOpacity        = 0.0f;
            _cameraPara.cameraResolutionWidth  = _captureResolution.width;
            _cameraPara.cameraResolutionHeight = _captureResolution.height;
            _cameraPara.pixelFormat            = CapturePixelFormat.JPEG;

            if (Const.HOLO_CAPTURE)
            {
                PhotoCapture.CreateAsync(true, OnPhotoCaptureCreatedHOLO);
            }
            else
            {
                PhotoCapture.CreateAsync(false, OnPhotoCaptureCreated);
            }

            // Initialize logger
            _myLogger = new MyLogger("latency-" + Const.SERVER_IP + "-" + Const.TOKEN_SIZE + ".txt");
            await _myLogger.InitializeLogger();

            // Initialize token control
            _tokenController = new TokenController(Const.TOKEN_SIZE, _myLogger);

            // Initialize file loaders
            await InitializeFileLoading();

            // Initialize network
            await InitializeNetworkAsync();
            await GetServerTimeOffsetAsync();

            _isInitialized = true;
            _startTime     = GetTimeMillis();
        }