diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.0.5
+
+* Create `Settings` data type.
+
 0.0.4
 
 * Create `Status` data type.
diff --git a/src/Data/Aviation/Stratux/Types.hs b/src/Data/Aviation/Stratux/Types.hs
--- a/src/Data/Aviation/Stratux/Types.hs
+++ b/src/Data/Aviation/Stratux/Types.hs
@@ -5,6 +5,8 @@
 import Data.Aviation.Stratux.Types.EmitterCategory as T
 import Data.Aviation.Stratux.Types.GpsSolution as T
 import Data.Aviation.Stratux.Types.IcaoAddr as T
+import Data.Aviation.Stratux.Types.NetworkConnection as T
+import Data.Aviation.Stratux.Types.Settings as T
 import Data.Aviation.Stratux.Types.Status as T
 import Data.Aviation.Stratux.Types.TargetType as T
 import Data.Aviation.Stratux.Types.Traffic as T
diff --git a/src/Data/Aviation/Stratux/Types/NetworkConnection.hs b/src/Data/Aviation/Stratux/Types/NetworkConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Aviation/Stratux/Types/NetworkConnection.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Data.Aviation.Stratux.Types.NetworkConnection(
+  NetworkConnection(..)
+, HasNetworkConnection(..)
+) where
+
+import Control.Applicative((<*>))
+import Control.Lens(makeClassy)
+import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), (.:), (.=), object, withObject)
+import Data.Bool(Bool)
+import Data.Eq(Eq)
+import Data.Functor((<$>))
+import Data.Int(Int)
+import Data.Maybe(Maybe)
+import Data.Ord(Ord)
+import Data.String(String)
+import Data.Time(UTCTime)
+import Data.Word(Word8)
+import Prelude(Show)
+
+-- $setup
+-- >>> :set -XOverloadedStrings
+-- >>> import Control.Lens
+-- >>> import Data.Aeson(decode, encode)
+-- >>> import Data.Maybe(Maybe)
+-- >>> import Data.Time
+-- >>> import Prelude
+
+data NetworkConnection =
+  NetworkConnection {
+    _conn :: Maybe String -- net.UDPConn
+  , _ip :: String
+  , _port :: Int
+  , _capability :: Word8
+  , _lastUnreachable :: UTCTime
+  , _sleepFlag :: Bool
+  } deriving (Eq, Ord, Show)
+
+makeClassy ''NetworkConnection
+
+-- |
+--
+-- >>> decode "{\"Conn\":null,\"Ip\":\"\",\"Port\":4000,\"Capability\":5,\"LastUnreachable\":\"0001-01-01T00:00:00Z\",\"SleepFlag\":false}" :: Maybe NetworkConnection
+-- Just (NetworkConnection {_conn = Nothing, _ip = "", _port = 4000, _capability = 5, _lastUnreachable = 0001-01-01 00:00:00 UTC, _sleepFlag = False})
+instance FromJSON NetworkConnection where
+  parseJSON =
+    withObject "NetworkConnection" (\x -> 
+      NetworkConnection <$>
+        x .: "Conn" <*>
+        x .: "Ip" <*>
+        x .: "Port" <*>
+        x .: "Capability" <*>
+        x .: "LastUnreachable" <*>
+        x .: "SleepFlag")
+
+-- |
+--
+-- >>> encode (NetworkConnection Nothing "" 4000 5 (UTCTime (fromGregorian 1 1 1) 597) False)
+-- "{\"Ip\":\"\",\"Conn\":null,\"Capability\":5,\"SleepFlag\":false,\"LastUnreachable\":\"0001-01-01T00:09:57Z\",\"Port\":4000}"
+instance ToJSON NetworkConnection where
+  toJSON (NetworkConnection conn_ ip_ port_ capability_ lastUnreachable_ sleepFlag_) =
+    object [
+      "Conn" .= conn_
+    , "Ip" .= ip_
+    , "Port" .= port_
+    , "Capability" .= capability_
+    , "LastUnreachable" .= lastUnreachable_
+    , "SleepFlag" .= sleepFlag_
+    ]
diff --git a/src/Data/Aviation/Stratux/Types/Settings.hs b/src/Data/Aviation/Stratux/Types/Settings.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Aviation/Stratux/Types/Settings.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+module Data.Aviation.Stratux.Types.Settings(
+  Settings(..)
+, HasSettings(..)
+) where
+
+import Control.Applicative((<*>))
+import Control.Lens(makeClassy)
+import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), (.:), (.=), object, withObject)
+import Data.Aviation.Stratux.Types.NetworkConnection
+import Data.Bool(Bool)
+import Data.Eq(Eq)
+import Data.Functor((<$>))
+import Data.Int(Int)
+import Data.Ord(Ord)
+import Data.String(String)
+import Prelude(Show)
+
+-- $setup
+-- >>> :set -XOverloadedStrings
+-- >>> import Control.Lens
+-- >>> import Data.Aeson(decode, encode)
+-- >>> import Data.Maybe(Maybe)
+-- >>> import Data.Time
+-- >>> import Prelude
+
+data Settings =
+  Settings {
+    _uatEnabled :: Bool
+  , _esEnabled :: Bool
+  , _gpsEnabled :: Bool
+  , _networkOutputs :: [NetworkConnection]
+  , _ahrsEnabled :: Bool
+  , _debug :: Bool
+  , _replayLog :: Bool
+  , _ppm :: Int
+  , _ownshipModeS :: String
+  , _watchList :: String
+  } deriving (Eq, Ord, Show)
+
+makeClassy ''Settings
+
+-- |
+--
+-- >>> decode "{\"UAT_Enabled\":true,\"ES_Enabled\":true,\"GPS_Enabled\":true,\"NetworkOutputs\":[{\"Conn\":null,\"Ip\":\"\",\"Port\":4000,\"Capability\":5,\"LastUnreachable\":\"0001-01-01T00:00:00Z\",\"SleepFlag\":false}],\"AHRS_Enabled\":false,\"DEBUG\":false,\"ReplayLog\":true,\"PPM\":0,\"OwnshipModeS\":\"F00000\",\"WatchList\":\"\"}" :: Maybe Settings
+-- Just (Settings {_uatEnabled = True, _esEnabled = True, _gpsEnabled = True, _networkOutputs = [NetworkConnection {_conn = Nothing, _ip = "", _port = 4000, _capability = 5, _lastUnreachable = 0001-01-01 00:00:00 UTC, _sleepFlag = False}], _ahrsEnabled = False, _debug = False, _replayLog = True, _ppm = 0, _ownshipModeS = "F00000", _watchList = ""})
+instance FromJSON Settings where
+  parseJSON =
+    withObject "Settings" (\x -> 
+      Settings <$>
+        x .: "UAT_Enabled" <*>
+        x .: "ES_Enabled" <*>
+        x .: "GPS_Enabled" <*>
+        x .: "NetworkOutputs" <*>
+        x .: "AHRS_Enabled" <*>
+        x .: "DEBUG" <*>
+        x .: "ReplayLog" <*>
+        x .: "PPM" <*>
+        x .: "OwnshipModeS" <*>
+        x .: "WatchList"
+        )
+
+-- |
+--
+-- >>> encode (Settings True True True [NetworkConnection Nothing "" 4000 5 (UTCTime (fromGregorian 1 1 1) 597) False] False False True 0 "F00000" "")
+-- "{\"OwnshipModeS\":\"F00000\",\"AHRS_Enabled\":false,\"NetworkOutputs\":[{\"Ip\":\"\",\"Conn\":null,\"Capability\":5,\"SleepFlag\":false,\"LastUnreachable\":\"0001-01-01T00:09:57Z\",\"Port\":4000}],\"PPM\":0,\"GPS_Enabled\":true,\"DEBUG\":false,\"ES_Enabled\":true,\"ReplayLog\":true,\"UAT_Enabled\":true,\"WatchList\":\"\"}"
+instance ToJSON Settings where
+  toJSON (Settings uatEnabled_ esEnabled_ gpsEnabled_ networkOutputs_ ahrsEnabled_ debug_ replayLog_ ppm_ ownshipModeS_ watchList_) =
+    object [
+      "UAT_Enabled" .= uatEnabled_
+    , "ES_Enabled" .= esEnabled_
+    , "GPS_Enabled" .= gpsEnabled_
+    , "NetworkOutputs" .= networkOutputs_
+    , "AHRS_Enabled" .= ahrsEnabled_
+    , "DEBUG" .= debug_
+    , "ReplayLog" .= replayLog_
+    , "PPM" .= ppm_
+    , "OwnshipModeS" .= ownshipModeS_
+    , "WatchList" .= watchList_
+    ]
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.4
+version:            0.0.5
 license:            BSD3
 license-file:       LICENCE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
@@ -47,6 +47,8 @@
                     Data.Aviation.Stratux.Types.EmitterCategory
                     Data.Aviation.Stratux.Types.GpsSolution
                     Data.Aviation.Stratux.Types.IcaoAddr
+                    Data.Aviation.Stratux.Types.NetworkConnection
+                    Data.Aviation.Stratux.Types.Settings
                     Data.Aviation.Stratux.Types.Status
                     Data.Aviation.Stratux.Types.TargetType
                     Data.Aviation.Stratux.Types.Traffic
