public static PiTop4Board UseCamera(this PiTop4Board module)
        {
            module.AddDeviceFactory <int, ICamera>(deviceType =>
            {
                var ctorSignature = new[] { typeof(int) };
                var ctor          = deviceType.GetConstructor(ctorSignature);

                if (ctor != null)
                {
                    return(cameraIndex =>
                           (ICamera)Activator.CreateInstance(deviceType, cameraIndex) !);
                }

                throw new InvalidOperationException(
                    $"Cannot find suitable constructor for type {deviceType}, looking for signature {ctorSignature}");
            });

            module.AddDeviceFactory <FileSystemCameraSettings, FileSystemCamera>(deviceType =>
            {
                return(settings => new FileSystemCamera(settings));
            });

            return(module);
        }