void FindControllersWorker()
        {
            while (true)
            {
                var foundUnpairedControllerAddresses = FindUnpairedControllersAddresses();
                foreach (var nameAddressTuple in foundUnpairedControllerAddresses)
                {
                    var deviceName       = nameAddressTuple.Item1;
                    var bluetoothAddress = nameAddressTuple.Item2;

                    if (_discoveredControllers.Any(c => c.BluetoothAddress == nameAddressTuple.Item2))
                    {
                        // we already know about this controller
                        //logger.Info($"Found {deviceName} - Already added before");
                        continue;
                    }

                    logger.Info($"Found {deviceName} - NEW");

                    if (deviceName.Contains("Gear VR Controller"))
                    {
                        // create and add new gear vr controller
                        var gearVRController = new GearVRController(bluetoothAddress);
                        gearVRController.Initialize();

                        _discoveredControllers.Add(gearVRController);

                        OnNewControllerAdded(gearVRController);
                    }
                    // TODO: elseif Daydream
                }
            }
        }
        private void TransmitDataForController(GearVRController controller)
        {
            if ((DateTime.Now - _lastTimeSent).TotalMilliseconds > 0)
            {
                try {
                    var trackingData = controller.LatestTrackingData;

                    var serializedStr = JsonConvert.SerializeObject(trackingData, Formatting.None);

                    _oscClient.Send(new OscMessage($"/{controller.Name}",
                                                   serializedStr,
                                                   DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
                                                   ));
                }
                catch (Exception ex) {
                    logger.Info($"Failed to send OSC: {ex.Message}");
                }

                _lastTimeSent = DateTime.Now;
            }
        }