diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+## Version 0.0.1 (2018-12-16)
+
+- Replace `p` submodule with `mismi-p`
+- Upgrade tests from QuickCheck to hedgehog
+- Remove `amazonka`, `x`, `disorder` and `twine` submodules
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,30 @@
+Copyright 2017, Nick Hibberd <nhibberd@gmail.com>, All Rights Reserved.
+
+Copyright 2017, Ambiata, All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. Neither the name of the copyright holder nor the names of
+     its contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/mismi-kernel.cabal b/mismi-kernel.cabal
new file mode 100644
--- /dev/null
+++ b/mismi-kernel.cabal
@@ -0,0 +1,68 @@
+version: 0.0.1
+
+name:
+  mismi-kernel
+author:
+  Nick Hibberd
+maintainer:
+  Nick Hibberd <nhibberd@gmail.com>
+homepage:
+  https://github.com/nhibberd/mismi
+bug-reports:
+  https://github.com/nhibberd/mismi/issues
+synopsis:
+  AWS Library
+description:
+  mismi-kernel is a simple dependency-free encoding of amazon regions.
+category:
+  AWS
+license:
+  BSD3
+license-file:
+  LICENSE
+cabal-version:
+  >= 1.8
+build-type:
+  Simple
+tested-with:
+    GHC == 8.2.2
+  , GHC == 8.4.3
+extra-source-files:
+  CHANGELOG.md
+
+library
+  build-depends:
+      base                            >= 3          && < 5
+    , mismi-p
+    , text                            >= 1.1        && < 1.3
+
+  ghc-options:
+    -Wall
+
+  hs-source-dirs:
+    src
+
+  exposed-modules:
+    Mismi.Kernel.Data
+
+test-suite test
+  type:
+    exitcode-stdio-1.0
+
+  main-is:
+    test.hs
+  ghc-options:
+    -Wall -threaded -O2
+  hs-source-dirs:
+    test
+
+  other-modules:
+    Test.Mismi.Kernel.Data
+    Test.Mismi.Kernel.Gen
+
+  build-depends:
+      base                            >= 3          && < 5
+    , mismi-kernel
+    , mismi-p
+    , hedgehog
+    , text                            >= 1.1        && < 1.3
diff --git a/src/Mismi/Kernel/Data.hs b/src/Mismi/Kernel/Data.hs
new file mode 100644
--- /dev/null
+++ b/src/Mismi/Kernel/Data.hs
@@ -0,0 +1,112 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE OverloadedStrings #-}
+module Mismi.Kernel.Data (
+    MismiRegion (..)
+  , renderMismiRegion
+  , parseMismiRegion
+  ) where
+
+import           P
+
+
+-- | Mismi's view of available AWS regions.
+data MismiRegion =
+    IrelandRegion         -- ^ Europe / eu-west-1
+  | FrankfurtRegion       -- ^ Europe / eu-central-1
+  | TokyoRegion           -- ^ Asia Pacific / ap-northeast-1
+  | SeoulRegion           -- ^ Asia Pacific / ap-northeast-2
+  | SingaporeRegion       -- ^ Asia Pacific / ap-southeast-1
+  | SydneyRegion          -- ^ Asia Pacific / ap-southeast-2
+  | MumbaiRegion          -- ^ Asia Pacific / ap-south-1
+  | MontrealRegion
+  | LondonRegion
+
+  | BeijingRegion         -- ^ China / cn-north-1
+  | NorthVirginiaRegion   -- ^ US / us-east-1
+  | OhioRegion            -- ^ US / us-east-2
+  | NorthCaliforniaRegion -- ^ US / us-west-1
+  | OregonRegion          -- ^ US / us-west-2
+  | GovCloudRegion        -- ^ AWS GovCloud / us-gov-west-1
+  | GovCloudFIPSRegion    -- ^ AWS GovCloud (FIPS 140-2) S3 Only / fips-us-gov-west-1
+  | SaoPauloRegion        -- ^ South America / sa-east-1
+    deriving (Eq, Ord, Read, Show, Enum, Bounded)
+
+
+
+renderMismiRegion :: MismiRegion -> Text
+renderMismiRegion r =
+  case r of
+    IrelandRegion ->
+      "eu-west-1"
+    FrankfurtRegion ->
+      "eu-central-1"
+    TokyoRegion ->
+      "ap-northeast-1"
+    SeoulRegion ->
+      "ap-northeast-2"
+    SingaporeRegion ->
+      "ap-southeast-1"
+    SydneyRegion ->
+      "ap-southeast-2"
+    MumbaiRegion ->
+      "ap-south-1"
+    BeijingRegion ->
+      "cn-north-1"
+    NorthVirginiaRegion ->
+      "us-east-1"
+    OhioRegion ->
+      "us-east-2"
+    NorthCaliforniaRegion ->
+      "us-west-1"
+    OregonRegion ->
+      "us-west-2"
+    GovCloudRegion ->
+      "us-gov-west-1"
+    GovCloudFIPSRegion ->
+      "fips-us-gov-west-1"
+    SaoPauloRegion ->
+      "sa-east-1"
+    MontrealRegion ->
+      "ca-central-1"
+    LondonRegion ->
+      "eu-west-2"
+
+parseMismiRegion :: Text -> Maybe MismiRegion
+parseMismiRegion t =
+  case t of
+    "eu-west-1" ->
+      Just IrelandRegion
+    "eu-central-1" ->
+      Just FrankfurtRegion
+    "ap-northeast-1" ->
+      Just TokyoRegion
+    "ap-northeast-2" ->
+      Just SeoulRegion
+    "ap-southeast-1" ->
+      Just SingaporeRegion
+    "ap-southeast-2" ->
+      Just SydneyRegion
+    "ap-south-1" ->
+      Just MumbaiRegion
+    "cn-north-1" ->
+      Just BeijingRegion
+    "us-east-1" ->
+      Just NorthVirginiaRegion
+    "us-east-2" ->
+      Just OhioRegion
+    "us-west-2" ->
+      Just OregonRegion
+    "us-west-1" ->
+      Just NorthCaliforniaRegion
+    "us-gov-west-1" ->
+      Just GovCloudRegion
+    "fips-us-gov-west-1" ->
+      Just GovCloudFIPSRegion
+    "sa-east-1" ->
+      Just SaoPauloRegion
+    "eu-west-2" ->
+      Just LondonRegion
+    "ca-central-1" ->
+      Just MontrealRegion
+    _ ->
+      Nothing
diff --git a/test/Test/Mismi/Kernel/Data.hs b/test/Test/Mismi/Kernel/Data.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Mismi/Kernel/Data.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TemplateHaskell #-}
+module Test.Mismi.Kernel.Data (tests) where
+
+import           Hedgehog
+
+import           Mismi.Kernel.Data
+
+import           P
+
+import qualified Test.Mismi.Kernel.Gen as Gen
+
+prop_region :: Property
+prop_region =
+  property $ do
+    region <- forAll Gen.genMismiRegion
+    let
+      result = parseMismiRegion $ renderMismiRegion region
+    result === Just region
+
+tests :: IO Bool
+tests =
+  checkSequential $$(discover)
diff --git a/test/Test/Mismi/Kernel/Gen.hs b/test/Test/Mismi/Kernel/Gen.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Mismi/Kernel/Gen.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+module Test.Mismi.Kernel.Gen where
+
+import           Mismi.Kernel.Data
+
+import           Hedgehog
+import qualified Hedgehog.Gen as Gen
+
+genMismiRegion :: Gen MismiRegion
+genMismiRegion =
+  Gen.enumBounded
diff --git a/test/test.hs b/test/test.hs
new file mode 100644
--- /dev/null
+++ b/test/test.hs
@@ -0,0 +1,17 @@
+import           Control.Monad (unless)
+
+import           System.Exit (exitFailure)
+import           System.IO (BufferMode(..), hSetBuffering, stdout, stderr)
+
+import qualified Test.Mismi.Kernel.Data as Data
+
+main :: IO ()
+main = do
+  hSetBuffering stdout LineBuffering
+  hSetBuffering stderr LineBuffering
+
+  results <- sequence [
+      Data.tests
+    ]
+
+  unless (and results) exitFailure
