diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.0.7
+
+* Fix bug with ConstrainedClassMethods in type-classes.
+
 0.0.6
 
 * Create `SettingsSet` data type.
diff --git a/src/Data/Aviation/Stratux/Types/EmitterCategory.hs b/src/Data/Aviation/Stratux/Types/EmitterCategory.hs
--- a/src/Data/Aviation/Stratux/Types/EmitterCategory.hs
+++ b/src/Data/Aviation/Stratux/Types/EmitterCategory.hs
@@ -4,18 +4,18 @@
 module Data.Aviation.Stratux.Types.EmitterCategory(
   EmitterCategory(..)
 , AsEmitterCategory(..)
-, AsEmitterCategoryNum(..)
 ) where
 
-import Control.Category(Category(id))
 import Control.Lens(Prism', prism', makeClassyPrisms, (^?), ( # ))
 import Control.Monad(mzero, Monad(return))
 import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), Value(Number), withScientific)
 import Data.Eq(Eq)
+import Data.Int(Int)
 import Data.Maybe(Maybe(Just, Nothing))
 import Data.Ord(Ord)
 import Data.Scientific(Scientific)
-import Prelude(Show, Num)
+import Data.Word(Word)
+import Prelude(Show, Num, Integer, Float, Double)
 
 -- $setup
 -- >>> :set -XOverloadedStrings
@@ -32,40 +32,114 @@
   | Large -- 75000-300000lb
   | HighVortexLarge -- B757
   | Heavy -- > 300000lb
-  | HighPerformance -- >5G accel @ > 400KIAS
+  | HighPerformance -- >5G accel ^ > 400KIAS
   | Rotorcraft
   deriving (Eq, Ord, Show)
 
 makeClassyPrisms ''EmitterCategory
 
-class AsEmitterCategoryNum a where
-   _EmitterCategoryNum ::
-    (Num a, Eq a) =>
-    Prism'
-      a
-      EmitterCategory
+-- |
+--
+-- >>> _EmitterCategory # NoEmitterCategory :: Scientific
+-- 0.0
+--
+-- >>> _EmitterCategory # Light :: Scientific
+-- 1.0
+--
+-- >>> _EmitterCategory # HighVortexLarge :: Scientific
+-- 4.0
+--
+-- >>> _EmitterCategory # Rotorcraft :: Scientific
+-- 7.0
+instance AsEmitterCategory Scientific where
+  _EmitterCategory =
+    emitterCategoryNum
 
-instance AsEmitterCategoryNum EmitterCategory where
-  _EmitterCategoryNum =
-    id
+-- |
+--
+-- >>> _EmitterCategory # NoEmitterCategory :: Int
+-- 0
+--
+-- >>> _EmitterCategory # Light :: Int
+-- 1
+--
+-- >>> _EmitterCategory # HighVortexLarge :: Int
+-- 4
+--
+-- >>> _EmitterCategory # Rotorcraft :: Int
+-- 7
+instance AsEmitterCategory Int where
+  _EmitterCategory =
+    emitterCategoryNum
 
 -- |
 --
--- >>> _EmitterCategoryNum # NoEmitterCategory :: Scientific
+-- >>> _EmitterCategory # NoEmitterCategory :: Integer
+-- 0
+--
+-- >>> _EmitterCategory # Light :: Integer
+-- 1
+--
+-- >>> _EmitterCategory # HighVortexLarge :: Integer
+-- 4
+--
+-- >>> _EmitterCategory # Rotorcraft :: Integer
+-- 7
+instance AsEmitterCategory Integer where
+  _EmitterCategory =
+    emitterCategoryNum
+
+-- |
+--
+-- >>> _EmitterCategory # NoEmitterCategory :: Float
 -- 0.0
 --
--- >>> _EmitterCategoryNum # Light :: Scientific
+-- >>> _EmitterCategory # Light :: Float
 -- 1.0
 --
--- >>> _EmitterCategoryNum # HighVortexLarge :: Scientific
+-- >>> _EmitterCategory # HighVortexLarge :: Float
 -- 4.0
 --
--- >>> _EmitterCategoryNum # Rotorcraft :: Scientific
+-- >>> _EmitterCategory # Rotorcraft :: Float
 -- 7.0
-instance AsEmitterCategoryNum Scientific where
-  _EmitterCategoryNum =
+instance AsEmitterCategory Float where
+  _EmitterCategory =
     emitterCategoryNum
 
+-- |
+--
+-- >>> _EmitterCategory # NoEmitterCategory :: Double
+-- 0.0
+--
+-- >>> _EmitterCategory # Light :: Double
+-- 1.0
+--
+-- >>> _EmitterCategory # HighVortexLarge :: Double
+-- 4.0
+--
+-- >>> _EmitterCategory # Rotorcraft :: Double
+-- 7.0
+instance AsEmitterCategory Double where
+  _EmitterCategory =
+    emitterCategoryNum
+
+-- |
+--
+-- >>> _EmitterCategory # NoEmitterCategory :: Word
+-- 0
+--
+-- >>> _EmitterCategory # Light :: Word
+-- 1
+--
+-- >>> _EmitterCategory # HighVortexLarge :: Word
+-- 4
+--
+-- >>> _EmitterCategory # Rotorcraft :: Word
+-- 7
+instance AsEmitterCategory Word where
+  _EmitterCategory =
+    emitterCategoryNum
+
 emitterCategoryNum ::
   (Num a, Eq a) =>
   Prism'
@@ -125,7 +199,7 @@
 -- Just Rotorcraft
 instance FromJSON EmitterCategory where
   parseJSON =
-    withScientific "EmitterCategory" (\n -> case n ^? _EmitterCategoryNum of
+    withScientific "EmitterCategory" (\n -> case n ^? _EmitterCategory of
       Nothing ->
         mzero
       Just t ->
@@ -145,4 +219,4 @@
 -- "7"
 instance ToJSON EmitterCategory where
   toJSON c =
-    Number (_EmitterCategoryNum # c)
+    Number (_EmitterCategory # c)
diff --git a/src/Data/Aviation/Stratux/Types/TargetType.hs b/src/Data/Aviation/Stratux/Types/TargetType.hs
--- a/src/Data/Aviation/Stratux/Types/TargetType.hs
+++ b/src/Data/Aviation/Stratux/Types/TargetType.hs
@@ -4,18 +4,18 @@
 module Data.Aviation.Stratux.Types.TargetType(
   TargetType(..)
 , AsTargetType(..)
-, AsTargetTypeNum(..)
 ) where
 
-import Control.Category(Category(id))
 import Control.Lens(makeClassyPrisms, Prism', prism', (^?), ( # ))
 import Control.Monad(Monad(return), mzero)
 import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), Value(Number), withScientific)
 import Data.Eq(Eq)
+import Data.Int(Int)
 import Data.Maybe
 import Data.Ord(Ord)
 import Data.Scientific(Scientific)
-import Prelude(Num, Show)
+import Data.Word(Word)
+import Prelude(Num, Show, Integer, Float, Double)
 
 -- $setup
 -- >>> :set -XOverloadedStrings
@@ -34,29 +34,88 @@
 
 makeClassyPrisms ''TargetType
 
-class AsTargetTypeNum a where
-   _TargetTypeNum ::
-    (Num a, Eq a) =>
-    Prism'
-      a
-      TargetType
+-- |
+--
+-- >>> _TargetType # ModeS :: Scientific
+-- 0.0
+--
+-- >>> _TargetType # Adsb :: Scientific
+-- 1.0
+--
+-- >>> _TargetType # Tisb :: Scientific
+-- 4.0
+instance AsTargetType Scientific where
+  _TargetType =
+    targetTypeNum
 
-instance AsTargetTypeNum TargetType where
-  _TargetTypeNum =
-    id
+-- |
+--
+-- >>> _TargetType # ModeS :: Int
+-- 0
+--
+-- >>> _TargetType # Adsb :: Int
+-- 1
+--
+-- >>> _TargetType # Tisb :: Int
+-- 4
+instance AsTargetType Int where
+  _TargetType =
+    targetTypeNum
 
 -- |
 --
--- >>> _TargetTypeNum # ModeS :: Scientific
+-- >>> _TargetType # ModeS :: Integer
+-- 0
+--
+-- >>> _TargetType # Adsb :: Integer
+-- 1
+--
+-- >>> _TargetType # Tisb :: Integer
+-- 4
+instance AsTargetType Integer where
+  _TargetType =
+    targetTypeNum
+
+-- |
+--
+-- >>> _TargetType # ModeS :: Float
 -- 0.0
 --
--- >>> _TargetTypeNum # Adsb :: Scientific
+-- >>> _TargetType # Adsb :: Float
 -- 1.0
 --
--- >>> _TargetTypeNum # Tisb :: Scientific
+-- >>> _TargetType # Tisb :: Float
 -- 4.0
-instance AsTargetTypeNum Scientific where
-  _TargetTypeNum =
+instance AsTargetType Float where
+  _TargetType =
+    targetTypeNum
+
+-- |
+--
+-- >>> _TargetType # ModeS :: Double
+-- 0.0
+--
+-- >>> _TargetType # Adsb :: Double
+-- 1.0
+--
+-- >>> _TargetType # Tisb :: Double
+-- 4.0
+instance AsTargetType Double where
+  _TargetType =
+    targetTypeNum
+
+-- |
+--
+-- >>> _TargetType # ModeS :: Word
+-- 0
+--
+-- >>> _TargetType # Adsb :: Word
+-- 1
+--
+-- >>> _TargetType # Tisb :: Word
+-- 4
+instance AsTargetType Word where
+  _TargetType =
     targetTypeNum
 
 targetTypeNum ::
diff --git a/stratux-types.cabal b/stratux-types.cabal
--- a/stratux-types.cabal
+++ b/stratux-types.cabal
@@ -1,5 +1,5 @@
 name:               stratux-types
-version:            0.0.6
+version:            0.0.7
 license:            BSD3
 license-file:       LICENCE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
