private async void initialize()
        {
            controller = GpioController.GetDefault();
            resetLights();
            //IoTHub connection
            var key = AuthenticationMethodFactory.CreateAuthenticationWithRegistrySymmetricKey(Config.Default.DeviceName, Config.Default.DeviceKey);
            deviceClient = DeviceClient.Create(Config.Default.IotHubUri, key, TransportType.Http1);

            //RGB LED PWM controller
            if (ApiInformation.IsApiContractPresent("Windows.Devices.DevicesLowLevelContract", 1))
            {
                try
                {
                    //check if the GPIO exists
                    if (controller != null)
                    {
                        var provider = PwmProviderSoftware.GetPwmProvider();
                        if (provider != null)
                        {
                            var controllers = (await PwmController.GetControllersAsync(provider));
                            if (controllers != null)
                            {
                                var controller = controllers.FirstOrDefault();
                                if (controller != null)
                                {
                                    controller.SetDesiredFrequency(100);
                                    var pinR = controller.OpenPin(ledPinNumberR);
                                    var pinG = controller.OpenPin(ledPinNumberG);
                                    var pinB = controller.OpenPin(ledPinNumberB);
                                    rgbLed = new RgbLed(pinR, pinG, pinB);
                                    rgbLed.On();
                                    rgbLed.Color = Colors.White;
                                    Task.Delay(50).Wait();
                                    rgbLed.Color = Colors.Black;
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
            }

            await receiveCommands(deviceClient);
        }