diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,10 +1,13 @@
 # Revision history for lifx-lan
 
-## 0.8 -- 25-02-2023
+## 0.8.3 -- 2024-09-03
+- Update to latest products list.
+
+## 0.8 -- 2023-02-25
 - Various minor improvements to MTL interfaces.
-- Update to latest products list
+- Update to latest products list.
 
-## 0.7.1 -- 21-10-2022
+## 0.7.1 -- 2022-10-21
 - Handle invalid UTF-8 in light label.
 - Ensure discovery exits successfully when zero devices are wanted.
 
@@ -39,8 +42,8 @@
 ## 0.4.0 -- 2021-07-30
 - Use abstract Device type.
 - Use more types from standard libraries where appropriate:
-    - PortNumber
-    - NominalDiffTime
+    - `PortNumber`
+    - `NominalDiffTime`
 - General cleanup and documentation improvements.
 
 ## 0.3.0 -- 2021-06-19
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,8 @@
-Haskell bindings to the [LIFX LAN API](https://lan.developer.lifx.com/docs).
+# ⚠️ Looking for maintainers! ⚠️
+
+Now that LIFX have given up on Europe, I'm less inclined to work on this project. Let me know if you're interested.
+
+## Haskell bindings to the [LIFX LAN API](https://lan.developer.lifx.com/docs).
 
 This library provides a reasonably high-level interface, but doesn't try to be *too* clever.
 For example, it doesn't check message delivery, and throws an error if a light takes too long to respond.
diff --git a/lifx-lan.cabal b/lifx-lan.cabal
--- a/lifx-lan.cabal
+++ b/lifx-lan.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               lifx-lan
-version:            0.8.2
+version:            0.8.3
 license:            BSD-3-Clause
 license-file:       LICENSE
 author:             George Thomas
@@ -27,21 +27,21 @@
     ghc-options:
         -Wall
     build-depends:
-        base ^>= {4.16, 4.17, 4.18},
-        ansi-terminal ^>= {0.11.1, 1.0},
+        base ^>= {4.16, 4.17, 4.18, 4.19},
+        ansi-terminal ^>= {0.11.1, 1.0, 1.1},
         binary ^>= 0.8.8,
         bytestring ^>= {0.10.8, 0.11, 0.12},
         colour ^>= 2.3.6,
         composition ^>= 1.0.2.1,
-        containers ^>= 0.6.2.1,
+        containers ^>= {0.6.2.1, 0.7},
         extra ^>= 1.7.1,
         monad-loops ^>= 0.4.3,
         mtl ^>= {2.2.2, 2.3},
-        network ^>= 3.1.1.1,
+        network ^>= {3.1.1.1, 3.2},
         random ^>= 1.2.0,
         safe ^>= 0.3.19,
-        text ^>= {1.2.3, 2.0},
-        time ^>= {1.9.3, 1.10, 1.11, 1.12, 1.13},
+        text ^>= {1.2.3, 2.0, 2.1},
+        time ^>= {1.9.3, 1.10, 1.11, 1.12, 1.13, 1.14},
         transformers ^>= {0.5.6, 0.6},
     default-language: Haskell2010
     default-extensions:
diff --git a/src/Lifx/Internal/Colour.hs b/src/Lifx/Internal/Colour.hs
--- a/src/Lifx/Internal/Colour.hs
+++ b/src/Lifx/Internal/Colour.hs
@@ -48,14 +48,14 @@
         , kelvin = 0
         }
 
-interpolateColour :: Num a => a -> RGB a -> RGB a -> RGB a
+interpolateColour :: (Num a) => a -> RGB a -> RGB a -> RGB a
 interpolateColour r = liftA2 (\a b -> a * (r + b * (1 - r)))
 
 maxWord16 :: Float
 maxWord16 = fromIntegral $ maxBound @Word16
 
-minKelvin :: Num a => a
+minKelvin :: (Num a) => a
 minKelvin = 1500
 
-maxKelvin :: Num a => a
+maxKelvin :: (Num a) => a
 maxKelvin = 9000
diff --git a/src/Lifx/Internal/ProductInfo.hs b/src/Lifx/Internal/ProductInfo.hs
--- a/src/Lifx/Internal/ProductInfo.hs
+++ b/src/Lifx/Internal/ProductInfo.hs
@@ -8,2134 +8,3090 @@
     [ VendorInfo
         { vid = 1
         , name = "LIFX"
-        , defaults = Features
-            { hev = False
-            , color = False
-            , chain = False
-            , matrix = False
-            , relays = False
-            , buttons = False
-            , infrared = False
-            , multizone = False
-            , temperatureRange = Nothing
-            , extendedMultizone = False
-            }
-        , products =
-            [ ProductInfo
-                { pid = 1
-                , name = "LIFX Original 1000"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 3
-                , name = "LIFX Color 650"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 10
-                , name = "LIFX White 800 (Low Voltage)"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 6500
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 11
-                , name = "LIFX White 800 (High Voltage)"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 6500
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 15
-                , name = "LIFX Color 1000"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 18
-                , name = "LIFX White 900 BR30 (Low Voltage)"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 19
-                , name = "LIFX White 900 BR30 (High Voltage)"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 20
-                , name = "LIFX Color 1000 BR30"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 22
-                , name = "LIFX Color 1000"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 27
-                , name = "LIFX A19"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 28
-                , name = "LIFX BR30"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 29
-                , name = "LIFX A19 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 30
-                , name = "LIFX BR30 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 31
-                , name = "LIFX Z"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 32
-                , name = "LIFX Z"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 77
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Nothing
-                            , extendedMultizone = Just True
-                            }
-                        }
-                    , Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 36
-                , name = "LIFX Downlight"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 37
-                , name = "LIFX Downlight"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 38
-                , name = "LIFX Beam"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 77
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Nothing
-                            , extendedMultizone = Just True
-                            }
-                        }
-                    , Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 39
-                , name = "LIFX Downlight White to Warm"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 40
-                , name = "LIFX Downlight"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 43
-                , name = "LIFX A19"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 44
-                , name = "LIFX BR30"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 45
-                , name = "LIFX A19 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 46
-                , name = "LIFX BR30 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 2
-                        , minor = 80
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 49
-                , name = "LIFX Mini Color"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 50
-                , name = "LIFX Mini White to Warm"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 6500
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 3
-                        , minor = 70
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 51
-                , name = "LIFX Mini White"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 52
-                , name = "LIFX GU10"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 53
-                , name = "LIFX GU10"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 55
-                , name = "LIFX Tile"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just True
-                    , matrix = Just True
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 57
-                , name = "LIFX Candle"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just True
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 59
-                , name = "LIFX Mini Color"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 60
-                , name = "LIFX Mini White to Warm"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 6500
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades =
-                    [ Upgrade
-                        { major = 3
-                        , minor = 70
-                        , features = PartialFeatures
-                            { hev = Nothing
-                            , color = Nothing
-                            , chain = Nothing
-                            , matrix = Nothing
-                            , relays = Nothing
-                            , buttons = Nothing
-                            , infrared = Nothing
-                            , multizone = Nothing
-                            , temperatureRange = Just
-                                ( 1500
-                                , 9000
-                                )
-                            , extendedMultizone = Nothing
-                            }
-                        }
-                    ]
-                }
-            , ProductInfo
-                { pid = 61
-                , name = "LIFX Mini White"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 62
-                , name = "LIFX A19"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 63
-                , name = "LIFX BR30"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 64
-                , name = "LIFX A19 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 65
-                , name = "LIFX BR30 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 66
-                , name = "LIFX Mini White"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 68
-                , name = "LIFX Candle"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just True
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 70
-                , name = "LIFX Switch"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Just True
-                    , buttons = Just True
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Nothing
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 71
-                , name = "LIFX Switch"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Just True
-                    , buttons = Just True
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Nothing
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 81
-                , name = "LIFX Candle White to Warm"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2200
-                        , 6500
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 82
-                , name = "LIFX Filament Clear"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2100
-                        , 2100
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 85
-                , name = "LIFX Filament Amber"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2000
-                        , 2000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 87
-                , name = "LIFX Mini White"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 88
-                , name = "LIFX Mini White"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 89
-                , name = "LIFX Switch"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Just True
-                    , buttons = Just True
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Nothing
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 90
-                , name = "LIFX Clean"
-                , features = PartialFeatures
-                    { hev = Just True
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 91
-                , name = "LIFX Color"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 92
-                , name = "LIFX Color"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 93
-                , name = "LIFX A19 US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 94
-                , name = "LIFX BR30"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 96
-                , name = "LIFX Candle White to Warm"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2200
-                        , 6500
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 97
-                , name = "LIFX A19"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 98
-                , name = "LIFX BR30"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 99
-                , name = "LIFX Clean"
-                , features = PartialFeatures
-                    { hev = Just True
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 100
-                , name = "LIFX Filament Clear"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2100
-                        , 2100
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 101
-                , name = "LIFX Filament Amber"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2000
-                        , 2000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 109
-                , name = "LIFX A19 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 110
-                , name = "LIFX BR30 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 111
-                , name = "LIFX A19 Night Vision"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 112
-                , name = "LIFX BR30 Night Vision Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just True
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 113
-                , name = "LIFX Mini WW US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 114
-                , name = "LIFX Mini WW Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 115
-                , name = "LIFX Switch"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Just True
-                    , buttons = Just True
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Nothing
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 116
-                , name = "LIFX Switch"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Just True
-                    , buttons = Just True
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Nothing
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 117
-                , name = "LIFX Z US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Just True
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 118
-                , name = "LIFX Z Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Just True
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 119
-                , name = "LIFX Beam US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Just True
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 120
-                , name = "LIFX Beam Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just True
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Just True
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 121
-                , name = "LIFX Downlight Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 122
-                , name = "LIFX Downlight US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 123
-                , name = "LIFX Color US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 124
-                , name = "LIFX Color Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 125
-                , name = "LIFX White to Warm US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 126
-                , name = "LIFX White to Warm Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 127
-                , name = "LIFX White US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 128
-                , name = "LIFX White Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 129
-                , name = "LIFX Color US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 130
-                , name = "LIFX Color Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 131
-                , name = "LIFX White To Warm US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 132
-                , name = "LIFX White To Warm Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 133
-                , name = "LIFX White US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 134
-                , name = "LIFX White Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just False
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 2700
-                        , 2700
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 135
-                , name = "LIFX GU10 Color US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 136
-                , name = "LIFX GU10 Color Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just False
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 137
-                , name = "LIFX Candle Color US"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just True
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
-                , upgrades = []
-                }
-            , ProductInfo
-                { pid = 138
-                , name = "LIFX Candle Color Intl"
-                , features = PartialFeatures
-                    { hev = Nothing
-                    , color = Just True
-                    , chain = Just False
-                    , matrix = Just True
-                    , relays = Nothing
-                    , buttons = Nothing
-                    , infrared = Just False
-                    , multizone = Just False
-                    , temperatureRange = Just
-                        ( 1500
-                        , 9000
-                        )
-                    , extendedMultizone = Nothing
-                    }
+        , defaults =
+            Features
+                { hev = False
+                , color = False
+                , chain = False
+                , matrix = False
+                , relays = False
+                , buttons = False
+                , infrared = False
+                , multizone = False
+                , temperatureRange = Nothing
+                , extendedMultizone = False
+                }
+        , products =
+            [ ProductInfo
+                { pid = 1
+                , name = "LIFX Original 1000"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 3
+                , name = "LIFX Color 650"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 10
+                , name = "LIFX White 800 (Low Voltage)"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 6500
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 11
+                , name = "LIFX White 800 (High Voltage)"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 6500
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 15
+                , name = "LIFX Color 1000"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 18
+                , name = "LIFX White 900 BR30 (Low Voltage)"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 19
+                , name = "LIFX White 900 BR30 (High Voltage)"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 20
+                , name = "LIFX Color 1000 BR30"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 22
+                , name = "LIFX Color 1000"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 27
+                , name = "LIFX A19"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 28
+                , name = "LIFX BR30"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 29
+                , name = "LIFX A19 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 30
+                , name = "LIFX BR30 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 31
+                , name = "LIFX Z"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 32
+                , name = "LIFX Z"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 77
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange = Nothing
+                                , extendedMultizone = Just True
+                                }
+                        }
+                    , Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 36
+                , name = "LIFX Downlight"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 37
+                , name = "LIFX Downlight"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 38
+                , name = "LIFX Beam"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 77
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange = Nothing
+                                , extendedMultizone = Just True
+                                }
+                        }
+                    , Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 39
+                , name = "LIFX Downlight White to Warm"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 40
+                , name = "LIFX Downlight"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 43
+                , name = "LIFX A19"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 44
+                , name = "LIFX BR30"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 45
+                , name = "LIFX A19 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 46
+                , name = "LIFX BR30 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 2
+                        , minor = 80
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 49
+                , name = "LIFX Mini Color"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 50
+                , name = "LIFX Mini White to Warm"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 6500
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 3
+                        , minor = 70
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 51
+                , name = "LIFX Mini White"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 52
+                , name = "LIFX GU10"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 53
+                , name = "LIFX GU10"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 55
+                , name = "LIFX Tile"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just True
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 57
+                , name = "LIFX Candle"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 59
+                , name = "LIFX Mini Color"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 60
+                , name = "LIFX Mini White to Warm"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 6500
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades =
+                    [ Upgrade
+                        { major = 3
+                        , minor = 70
+                        , features =
+                            PartialFeatures
+                                { hev = Nothing
+                                , color = Nothing
+                                , chain = Nothing
+                                , matrix = Nothing
+                                , relays = Nothing
+                                , buttons = Nothing
+                                , infrared = Nothing
+                                , multizone = Nothing
+                                , temperatureRange =
+                                    Just
+                                        ( 1500
+                                        , 9000
+                                        )
+                                , extendedMultizone = Nothing
+                                }
+                        }
+                    ]
+                }
+            , ProductInfo
+                { pid = 61
+                , name = "LIFX Mini White"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 62
+                , name = "LIFX A19"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 63
+                , name = "LIFX BR30"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 64
+                , name = "LIFX A19 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 65
+                , name = "LIFX BR30 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 66
+                , name = "LIFX Mini White"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 68
+                , name = "LIFX Candle"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 70
+                , name = "LIFX Switch"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Just True
+                        , buttons = Just True
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange = Nothing
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 71
+                , name = "LIFX Switch"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Just True
+                        , buttons = Just True
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange = Nothing
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 81
+                , name = "LIFX Candle White to Warm"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2200
+                                , 6500
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 82
+                , name = "LIFX Filament Clear"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2100
+                                , 2100
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 85
+                , name = "LIFX Filament Amber"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2000
+                                , 2000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 87
+                , name = "LIFX Mini White"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 88
+                , name = "LIFX Mini White"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 89
+                , name = "LIFX Switch"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Just True
+                        , buttons = Just True
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange = Nothing
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 90
+                , name = "LIFX Clean"
+                , features =
+                    PartialFeatures
+                        { hev = Just True
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 91
+                , name = "LIFX Color"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 92
+                , name = "LIFX Color"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 93
+                , name = "LIFX A19 US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 94
+                , name = "LIFX BR30"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 96
+                , name = "LIFX Candle White to Warm"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2200
+                                , 6500
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 97
+                , name = "LIFX A19"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 98
+                , name = "LIFX BR30"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 99
+                , name = "LIFX Clean"
+                , features =
+                    PartialFeatures
+                        { hev = Just True
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 100
+                , name = "LIFX Filament Clear"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2100
+                                , 2100
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 101
+                , name = "LIFX Filament Amber"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2000
+                                , 2000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 109
+                , name = "LIFX A19 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 110
+                , name = "LIFX BR30 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 111
+                , name = "LIFX A19 Night Vision"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 112
+                , name = "LIFX BR30 Night Vision Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just True
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 113
+                , name = "LIFX Mini WW US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 114
+                , name = "LIFX Mini WW Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 115
+                , name = "LIFX Switch"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Just True
+                        , buttons = Just True
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange = Nothing
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 116
+                , name = "LIFX Switch"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Just True
+                        , buttons = Just True
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange = Nothing
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 117
+                , name = "LIFX Z US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 118
+                , name = "LIFX Z Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 119
+                , name = "LIFX Beam US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 120
+                , name = "LIFX Beam Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 121
+                , name = "LIFX Downlight Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 122
+                , name = "LIFX Downlight US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 123
+                , name = "LIFX Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 124
+                , name = "LIFX Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 125
+                , name = "LIFX White to Warm US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 126
+                , name = "LIFX White to Warm Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 127
+                , name = "LIFX White US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 128
+                , name = "LIFX White Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 129
+                , name = "LIFX Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 130
+                , name = "LIFX Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 131
+                , name = "LIFX White To Warm US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 132
+                , name = "LIFX White To Warm Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 133
+                , name = "LIFX White US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 134
+                , name = "LIFX White Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just False
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 2700
+                                , 2700
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 135
+                , name = "LIFX GU10 Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 136
+                , name = "LIFX GU10 Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 137
+                , name = "LIFX Candle Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 138
+                , name = "LIFX Candle Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 141
+                , name = "LIFX Neon US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 142
+                , name = "LIFX Neon Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 143
+                , name = "LIFX String US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 144
+                , name = "LIFX String Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 161
+                , name = "LIFX Outdoor Neon US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 162
+                , name = "LIFX Outdoor Neon Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 163
+                , name = "LIFX A19 US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 164
+                , name = "LIFX BR30 US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 165
+                , name = "LIFX A19 Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 166
+                , name = "LIFX BR30 Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 167
+                , name = "LIFX Downlight"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 168
+                , name = "LIFX Downlight"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 169
+                , name = "LIFX A21 1600lm US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 170
+                , name = "LIFX A21 1600lm Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 171
+                , name = "LIFX Round Spot US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 173
+                , name = "LIFX Round Path US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 174
+                , name = "LIFX Square Path US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 175
+                , name = "LIFX PAR38 US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 176
+                , name = "LIFX Ceiling US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 177
+                , name = "LIFX Ceiling Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 181
+                , name = "LIFX Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 182
+                , name = "LIFX Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 185
+                , name = "LIFX Candle Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 186
+                , name = "LIFX Candle Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 187
+                , name = "LIFX Candle Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 188
+                , name = "LIFX Candle Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 203
+                , name = "LIFX String US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 204
+                , name = "LIFX String Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 205
+                , name = "LIFX Indoor Neon US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 206
+                , name = "LIFX Indoor Neon Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just False
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just True
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Just True
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 215
+                , name = "LIFX Candle Color US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 216
+                , name = "LIFX Candle Colour Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 217
+                , name = "LIFX Tube US"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
+                , upgrades = []
+                }
+            , ProductInfo
+                { pid = 218
+                , name = "LIFX Tube Intl"
+                , features =
+                    PartialFeatures
+                        { hev = Nothing
+                        , color = Just True
+                        , chain = Just False
+                        , matrix = Just True
+                        , relays = Nothing
+                        , buttons = Nothing
+                        , infrared = Just False
+                        , multizone = Just False
+                        , temperatureRange =
+                            Just
+                                ( 1500
+                                , 9000
+                                )
+                        , extendedMultizone = Nothing
+                        }
                 , upgrades = []
                 }
             ]
diff --git a/src/Lifx/Internal/ProductInfoMap.hs b/src/Lifx/Internal/ProductInfoMap.hs
--- a/src/Lifx/Internal/ProductInfoMap.hs
+++ b/src/Lifx/Internal/ProductInfoMap.hs
@@ -20,9 +20,9 @@
         productInfo <&> \VendorInfo{..} ->
             ( vid
             ,
-              ( defaults
-              , Map.fromList $ ((.pid) &&& id) <$> products
-              )
+                ( defaults
+                , Map.fromList $ ((.pid) &&& id) <$> products
+                )
             )
 
 -- | Information about a particular LIFX product.
diff --git a/src/Lifx/Lan.hs b/src/Lifx/Lan.hs
--- a/src/Lifx/Lan.hs
+++ b/src/Lifx/Lan.hs
@@ -41,6 +41,7 @@
     StateHostFirmware (..),
     StatePower (..),
     StateVersion (..),
+    StateGroup (..),
     LightState (..),
 
     -- ** Product info
@@ -63,7 +64,7 @@
 import Control.Monad.Reader
 import Control.Monad.State
 import Control.Monad.Trans.Maybe
-import Control.Monad.Writer hiding (Product)
+import Control.Monad.Writer
 import Data.Composition
 import Data.Either.Extra
 import Data.Fixed
@@ -71,6 +72,7 @@
 import Data.Functor
 import Data.Maybe
 import Data.Time
+import Data.Time.Clock.POSIX
 import Data.Word
 import Network.Socket
 import System.IO.Error
@@ -90,6 +92,7 @@
  )
 import Data.Binary.Put (
     Put,
+    putByteString,
     putWord16le,
     putWord32le,
     putWord64be,
@@ -103,7 +106,7 @@
 import Data.Map (Map)
 import Data.Map.Strict qualified as Map
 import Data.Text (Text)
-import Data.Text.Encoding (decodeUtf8')
+import Data.Text.Encoding (decodeUtf8', encodeUtf8)
 import Data.Text.Encoding.Error (UnicodeException (DecodeError))
 import GHC.Generics (Generic)
 import Network.Socket.ByteString (recvFrom, sendTo)
@@ -144,8 +147,12 @@
     GetPower :: Message StatePower
     -- | https://lan.developer.lifx.com/docs/changing-a-device#setpower---packet-21
     SetPower :: Bool -> Message ()
+    -- | https://lan.developer.lifx.com/docs/changing-a-device#setlabel---packet-24
+    SetLabel :: Text -> Message ()
     -- | https://lan.developer.lifx.com/docs/querying-the-device-for-data#getversion---packet-32
     GetVersion :: Message StateVersion
+    -- | https://lan.developer.lifx.com/docs/querying-the-device-for-data#getgroup---packet-51
+    GetGroup :: Message StateGroup
     -- | https://lan.developer.lifx.com/docs/querying-the-device-for-data#getcolor---packet-101
     GetColor :: Message LightState
     -- | https://lan.developer.lifx.com/docs/changing-a-device#setcolor---packet-102
@@ -199,6 +206,17 @@
     }
     deriving (Eq, Ord, Show, Generic)
 
+-- | https://lan.developer.lifx.com/docs/information-messages#stategroup---packet-53
+data StateGroup = StateGroup
+    { group :: BS.ByteString
+    -- ^ The unique identifier of this group as a UUID.
+    , label :: Text
+    -- ^ The name assigned to this group.
+    , updatedAt :: POSIXTime
+    -- ^ When this group was set on the device.
+    }
+    deriving (Eq, Ord, Show, Generic)
+
 -- | https://lan.developer.lifx.com/docs/information-messages#lightstate---packet-107
 data LightState = LightState
     { hsbk :: HSBK
@@ -210,7 +228,7 @@
 {- Message responses -}
 
 class MessageResult a where
-    getSendResult :: MonadLifxIO m => Device -> m a
+    getSendResult :: (MonadLifxIO m) => Device -> m a
     default getSendResult :: (MonadLifxIO m, Response a) => Device -> m a
     getSendResult receiver = untilJustM do
         timeoutDuration <- getTimeout
@@ -226,7 +244,7 @@
                 Right r -> pure r
 
     broadcastAndGetResult ::
-        MonadLifxIO m =>
+        (MonadLifxIO m) =>
         -- | Transform output and discard messages which return 'Nothing'.
         (HostAddress -> a -> m (Maybe b)) ->
         -- | Return once this predicate over received messages passes. Otherwise just keep waiting until timeout.
@@ -318,6 +336,15 @@
         skip 4
         pure StateVersion{product = p, ..}
 instance MessageResult StateVersion
+instance Response StateGroup where
+    expectedPacketType = 53
+    messageSize = 56
+    getBody = do
+        group <- getByteString 16
+        label <- either (fail . showDecodeError) pure . decodeUtf8' . BS.takeWhile (/= 0) =<< getByteString 32
+        updatedAt <- secondsToNominalDiffTime . MkFixed . (* 1000) . fromIntegral <$> getWord64le
+        pure StateGroup{..}
+instance MessageResult StateGroup
 instance Response LightState where
     expectedPacketType = 107
     messageSize = 52
@@ -328,19 +355,17 @@
         label <- either (fail . showDecodeError) pure . decodeUtf8' . BS.takeWhile (/= 0) =<< getByteString 32
         skip 8
         pure LightState{..}
-      where
-        showDecodeError = \case
-            DecodeError s _ -> s
-            _ -> "impossible"
 instance MessageResult LightState
 
-msgResWitness :: (MessageResult r => Message r -> a) -> (Message r -> a)
+msgResWitness :: ((MessageResult r) => Message r -> a) -> (Message r -> a)
 msgResWitness f m = case m of
     GetService{} -> f m
     GetHostFirmware{} -> f m
     GetPower{} -> f m
     SetPower{} -> f m
+    SetLabel{} -> f m
     GetVersion{} -> f m
+    GetGroup{} -> f m
     GetColor{} -> f m
     SetColor{} -> f m
     SetLightPower{} -> f m
@@ -360,7 +385,7 @@
         Right x -> pure x
 
 runLifxT ::
-    MonadIO m =>
+    (MonadIO m) =>
     -- | Timeout for waiting for message responses, in microseconds.
     Int ->
     LifxT m a ->
@@ -369,10 +394,15 @@
     sock <- liftIO $ socket AF_INET Datagram defaultProtocol
     liftIO $ setSocketOption sock Broadcast 1
     liftIO . bind sock $ SockAddrInet defaultPort 0
-    source <- randomIO
+    source <-
+        untilJustM $
+            randomIO <&> \case
+                -- 0 and 1 cause problems on old firmware: https://lan.developer.lifx.com/docs/packet-contents#frame-header
+                n | n > 1 -> Just n
+                _ -> Nothing
     runExceptT $ runReaderT (evalStateT x 0) (sock, source, timeoutDuration)
 
-class Monad m => MonadLifx m where
+class (Monad m) => MonadLifx m where
     -- | The type of errors associated with 'm'.
     type MonadLifxError m
 
@@ -390,7 +420,7 @@
     -- otherwise just keep waiting until timeout.
     discoverDevices :: Maybe Int -> m [Device]
 
-instance MonadIO m => MonadLifx (LifxT m) where
+instance (MonadIO m) => MonadLifx (LifxT m) where
     type MonadLifxError (LifxT m) = LifxError
     lifxThrow = lifxThrowIO
     liftProductLookupError = ProductLookupError
@@ -411,21 +441,21 @@
             checkPort port
             pure . guard $ service == ServiceUDP
         p = nDevices <&> \n -> (>= n) . length
-instance MonadLifx m => MonadLifx (MaybeT m) where
+instance (MonadLifx m) => MonadLifx (MaybeT m) where
     type MonadLifxError (MaybeT m) = MonadLifxError m
     liftProductLookupError = liftProductLookupError @m
     sendMessage = lift .: sendMessage
     broadcastMessage = lift . broadcastMessage
     discoverDevices = lift . discoverDevices
     lifxThrow = lift . lifxThrow
-instance MonadLifx m => MonadLifx (ExceptT e m) where
+instance (MonadLifx m) => MonadLifx (ExceptT e m) where
     type MonadLifxError (ExceptT e m) = MonadLifxError m
     liftProductLookupError = liftProductLookupError @m
     sendMessage = lift .: sendMessage
     broadcastMessage = lift . broadcastMessage
     discoverDevices = lift . discoverDevices
     lifxThrow = lift . lifxThrow
-instance MonadLifx m => MonadLifx (StateT s m) where
+instance (MonadLifx m) => MonadLifx (StateT s m) where
     type MonadLifxError (StateT s m) = MonadLifxError m
     liftProductLookupError = liftProductLookupError @m
     sendMessage = lift .: sendMessage
@@ -439,7 +469,7 @@
     broadcastMessage = lift . broadcastMessage
     discoverDevices = lift . discoverDevices
     lifxThrow = lift . lifxThrow
-instance MonadLifx m => MonadLifx (ReaderT e m) where
+instance (MonadLifx m) => MonadLifx (ReaderT e m) where
     type MonadLifxError (ReaderT e m) = MonadLifxError m
     liftProductLookupError = liftProductLookupError @m
     sendMessage = lift .: sendMessage
@@ -545,12 +575,24 @@
             , packetType = 21
             , ..
             }
+    SetLabel{} ->
+        Header
+            { size = headerSize + 32
+            , packetType = 24
+            , ..
+            }
     GetVersion{} ->
         Header
             { size = headerSize
             , packetType = 32
             , ..
             }
+    GetGroup{} ->
+        Header
+            { size = headerSize
+            , packetType = 51
+            , ..
+            }
     GetColor{} ->
         Header
             { size = headerSize
@@ -583,7 +625,13 @@
     GetPower -> mempty
     SetPower b ->
         putWord16le if b then maxBound else minBound
+    SetLabel t -> do
+        putByteString b
+        replicateM_ (BS.length b) $ putWord8 0
+      where
+        b = encodeUtf8 t
     GetVersion -> mempty
+    GetGroup -> mempty
     GetColor -> mempty
     SetColor HSBK{..} d -> do
         putWord8 0
@@ -597,7 +645,7 @@
         putWord32le $ nominalDiffTimeToInt @Milli d
 
 -- | Ask a device for its vendor and product ID, and look up info on it from the official database.
-getProductInfo :: forall m. MonadLifx m => Device -> m Product
+getProductInfo :: forall m. (MonadLifx m) => Device -> m Product
 getProductInfo dev = do
     StateHostFirmware{..} <- sendMessage dev GetHostFirmware
     v <- sendMessage dev GetVersion
@@ -615,6 +663,7 @@
   where
     mt = case m of
         SetPower{} -> Nothing
+        SetLabel{} -> Nothing
         SetColor _ t -> Just t
         SetLightPower _ t -> Just t
     timeMicros t = round $ t * 1_000_000
@@ -629,7 +678,7 @@
         )
         $> fromIntegral x
 
-headerSize :: Num a => a
+headerSize :: (Num a) => a
 headerSize = 36
 
 nominalDiffTimeToInt :: forall f a r. (HasResolution r, f ~ Fixed r, Integral a) => NominalDiffTime -> a
@@ -638,10 +687,10 @@
     MkFixed n = realToFrac @Pico @f $ nominalDiffTimeToSeconds t
 
 -- | Inverted 'whileM'.
-untilM :: Monad m => m Bool -> m ()
+untilM :: (Monad m) => m Bool -> m ()
 untilM = whileM . fmap not
 
-checkPort :: MonadLifxIO f => PortNumber -> f ()
+checkPort :: (MonadLifxIO f) => PortNumber -> f ()
 checkPort port = when (port /= lifxPort) . lifxThrowIO $ UnexpectedPort port
 
 -- these helpers are all used by 'sendMessage' and 'broadcastMessage'
@@ -661,7 +710,7 @@
                         Right (_, _, res) -> pure $ Just res
   where
     throwDecodeFailure (bs', bo, e) = lifxThrowIO $ DecodeFailure (BL.toStrict bs') bo e
-sendMessage' :: MonadLifxIO m => Bool -> HostAddress -> Message r -> m ()
+sendMessage' :: (MonadLifxIO m) => Bool -> HostAddress -> Message r -> m ()
 sendMessage' tagged receiver msg = do
     sock <- getSocket
     counter <- getCounter
@@ -671,11 +720,11 @@
             sock
             (BL.toStrict $ encodeMessage tagged False counter source msg)
             (SockAddrInet lifxPort receiver)
-hostAddressFromSock :: MonadLifxIO m => SockAddr -> m HostAddress
+hostAddressFromSock :: (MonadLifxIO m) => SockAddr -> m HostAddress
 hostAddressFromSock = \case
     SockAddrInet port ha -> checkPort port >> pure ha
     addr -> lifxThrowIO $ UnexpectedSockAddrType addr
-receiveMessage :: MonadLifxIO m => Int -> Int -> m (Maybe (BS.ByteString, SockAddr))
+receiveMessage :: (MonadLifxIO m) => Int -> Int -> m (Maybe (BS.ByteString, SockAddr))
 receiveMessage t size = do
     sock <- getSocket
     liftIO
@@ -683,7 +732,12 @@
         . recvFrom sock
         $ headerSize + size
 
-broadcast :: MonadLifxIO m => Message r -> m ()
+broadcast :: (MonadLifxIO m) => Message r -> m ()
 broadcast msg = do
     incrementCounter
     sendMessage' False (tupleToHostAddress (255, 255, 255, 255)) msg
+
+showDecodeError :: UnicodeException -> String
+showDecodeError = \case
+    DecodeError s _ -> s
+    _ -> "impossible"
diff --git a/src/Lifx/Lan/Internal.hs b/src/Lifx/Lan/Internal.hs
--- a/src/Lifx/Lan/Internal.hs
+++ b/src/Lifx/Lan/Internal.hs
@@ -46,7 +46,7 @@
     deriving (Eq, Ord, Show, Generic)
 
 -- | A monad for sending and receiving LIFX messages.
-class MonadIO m => MonadLifxIO m where
+class (MonadIO m) => MonadLifxIO m where
     getSocket :: m Socket
     getSource :: m Word32
     getTimeout :: m Int
@@ -65,7 +65,7 @@
         m ()
     handleOldMessage _ _ _ _ = pure ()
 
-instance MonadIO m => MonadLifxIO (LifxT m) where
+instance (MonadIO m) => MonadLifxIO (LifxT m) where
     getSocket = LifxT $ asks fst3
     getSource = LifxT $ asks snd3
     getTimeout = LifxT $ asks thd3
@@ -95,16 +95,17 @@
 
 instance MonadTrans LifxT where
     lift = LifxT . lift . lift . lift
-instance MonadReader s m => MonadReader s (LifxT m) where
+instance (MonadReader s m) => MonadReader s (LifxT m) where
     ask = lift ask
     local f m = LifxT $ StateT \s -> ReaderT \e ->
         ExceptT $ local f $ unLifx e s m
-instance MonadState s m => MonadState s (LifxT m) where
+instance (MonadState s m) => MonadState s (LifxT m) where
     state = lift . state
-instance MonadError e m => MonadError e (LifxT m) where
-    throwError = lift . throwError @e @m
-    catchError m h = LifxT $ StateT \s -> ReaderT \e ->
-        ExceptT $ catchError @e @m (unLifx e s m) (unLifx e s . h)
+instance (MonadError e m) => MonadError (Either e LifxError) (LifxT m) where
+    throwError = either (lift . throwError @e @m) (LifxT . throwError)
+    catchError m h = LifxT $ StateT \s -> ReaderT \e -> ExceptT do
+        (m', s'') <- either ((,s) . h . Right) (first pure) <$> unLifx e s m
+        catchError @e @m (unLifx e s'' m') (unLifx e s'' . h . Left)
 
 unLifx :: (Socket, Word32, Int) -> Word8 -> LifxT m a -> m (Either LifxError (a, Word8))
 unLifx e s = runExceptT . flip runReaderT e . flip runStateT s . (.unwrap)
diff --git a/src/Lifx/Lan/Mock/Terminal.hs b/src/Lifx/Lan/Mock/Terminal.hs
--- a/src/Lifx/Lan/Mock/Terminal.hs
+++ b/src/Lifx/Lan/Mock/Terminal.hs
@@ -8,15 +8,22 @@
 import Control.Monad.Except
 import Control.Monad.Reader
 import Control.Monad.State
-import Data.Bifunctor
 import Data.Colour.RGBSpace
 import Data.Colour.SRGB
 import Data.Foldable
+import Data.Function
+import Data.Functor
+import Data.Traversable
+import Data.Tuple.Extra
+import Numeric.Natural
 
+import Data.ByteString qualified as BS
+import Data.List (unfoldr)
 import Data.Map (Map)
 import Data.Map.Strict qualified as Map
 import Data.Text (Text)
 import Data.Text.IO qualified as T
+import Data.Time.Clock.POSIX (getPOSIXTime)
 import System.Console.ANSI hiding (SetColor)
 
 import Lifx.Internal.Colour
@@ -32,6 +39,7 @@
 
 data MockState = MockState
     { light :: LightState
+    , group :: StateGroup
     , service :: Maybe StateService
     , hostFirmware :: Maybe StateHostFirmware
     , version :: Maybe StateVersion
@@ -46,8 +54,23 @@
 Note that sending some messages (e.g. 'GetVersion') will throw exceptions, since the necessary state isn't specified.
 See `runMockFull` for more control.
 -}
-runMock :: [(Device, Text)] -> Mock a -> IO (Either MockError a)
-runMock = runMockFull . fmap (second \t -> MockState (LightState (HSBK 0 0 0 0) 1 t) Nothing Nothing Nothing)
+runMock :: [(Device, (Text, Text))] -> Mock a -> IO (Either MockError a)
+runMock ds m = do
+    t0 <- getPOSIXTime
+    flip runMockFull m . flip evalState 0 $ for ds \d ->
+        state ((BS.pack . unfoldNat) &&& succ) <&> \uuid ->
+            d & second \(label, group) ->
+                MockState
+                    { light = LightState (HSBK 0 0 0 0) 1 label
+                    , group = StateGroup uuid group t0
+                    , service = Nothing
+                    , hostFirmware = Nothing
+                    , version = Nothing
+                    }
+  where
+    -- represent input as base-(maxBound @a)
+    unfoldNat :: forall a. (Integral a, Bounded a) => Natural -> [a]
+    unfoldNat = unfoldr \n -> guard (n /= 0) $> swap (second fromIntegral (n `quotRem` fromIntegral (maxBound @a)))
 
 -- | More general version of `runMock`, which allows specifying extra information about devices.
 runMockFull :: [(Device, MockState)] -> Mock a -> IO (Either MockError a)
@@ -79,7 +102,9 @@
             GetHostFirmware -> whenProvided s.hostFirmware
             GetPower -> pure $ StatePower s.light.power
             SetPower (convertPower -> power) -> modify $ Map.insert d s{light = s.light{power}}
+            SetLabel label -> modify $ Map.insert d s{light = s.light{label}}
             GetVersion -> whenProvided s.version
+            GetGroup -> pure s.group
             GetColor -> pure s.light
             SetColor hsbk _t -> modify $ Map.insert d s{light = s.light{hsbk}}
             SetLightPower (convertPower -> power) _t -> modify $ Map.insert d s{light = s.light{power}}
