diff --git a/cfn-flip.cabal b/cfn-flip.cabal
--- a/cfn-flip.cabal
+++ b/cfn-flip.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.18
 name:               cfn-flip
-version:            0.1.0.4
+version:            0.1.0.6
 license:            MIT
 license-file:       LICENSE
 copyright:          2021 Renaissance Learning Inc
@@ -79,7 +79,8 @@
         TypeApplications TypeFamilies
 
     ghc-options:
-        -Weverything -Wno-missing-exported-signatures
+        -Weverything -Wno-all-missed-specialisations
+        -Wno-missed-specialisations -Wno-missing-exported-signatures
         -Wno-missing-import-lists -Wno-unsafe
 
     build-depends:
@@ -91,7 +92,7 @@
         text >=1.2.3.1,
         unliftio >=0.2.12,
         unliftio-core >=0.1.2.0,
-        yaml >=0.11.2.0
+        yaml >=0.11.8.0
 
     if impl(ghc >=9.2)
         ghc-options: -Wno-missing-kind-signatures
@@ -117,14 +118,15 @@
         TypeApplications TypeFamilies
 
     ghc-options:
-        -Weverything -Wno-missing-exported-signatures
+        -Weverything -Wno-all-missed-specialisations
+        -Wno-missed-specialisations -Wno-missing-exported-signatures
         -Wno-missing-import-lists -Wno-unsafe
 
     build-depends:
         aeson >=1.4.6.0,
         base >=4.11 && <10,
         doctest >=0.16.2,
-        yaml >=0.11.2.0
+        yaml >=0.11.8.0
 
     if impl(ghc >=9.2)
         ghc-options: -Wno-missing-kind-signatures
@@ -154,7 +156,8 @@
         TypeApplications TypeFamilies
 
     ghc-options:
-        -Weverything -Wno-missing-exported-signatures
+        -Weverything -Wno-all-missed-specialisations
+        -Wno-missed-specialisations -Wno-missing-exported-signatures
         -Wno-missing-import-lists -Wno-unsafe
 
     build-depends:
diff --git a/src/CfnFlip.hs b/src/CfnFlip.hs
--- a/src/CfnFlip.hs
+++ b/src/CfnFlip.hs
@@ -29,7 +29,6 @@
 -- | Read a file of JSON and produce a 'ByteString' of Yaml
 --
 -- NB. The conversion occurs at 'Value'.
---
 jsonFileToYaml :: MonadUnliftIO m => FilePath -> m ByteString
 jsonFileToYaml = jsonToYaml @_ @Value <=< eitherDecodeFileStrictThrow
 
diff --git a/src/CfnFlip/Conduit.hs b/src/CfnFlip/Conduit.hs
--- a/src/CfnFlip/Conduit.hs
+++ b/src/CfnFlip/Conduit.hs
@@ -41,7 +41,6 @@
 --   .| sinkList
 -- :}
 -- "this is (pretty unlikely"
---
 takeBalancedC :: Monad m => (a -> Bool) -> (a -> Bool) -> ConduitT a a m ()
 takeBalancedC reopens closes = go (0 :: Int)
  where
@@ -49,10 +48,9 @@
     me <- await
 
     for_ me $ \a -> do
-      let
-        loop
-          | closes a = unless (balance <= 0) $ go $ balance - 1
-          | reopens a = go $ balance + 1
-          | otherwise = go balance
+      let loop
+            | closes a = unless (balance <= 0) $ go $ balance - 1
+            | reopens a = go $ balance + 1
+            | otherwise = go balance
 
       yield a >> loop
diff --git a/src/CfnFlip/IntrinsicFunction.hs b/src/CfnFlip/IntrinsicFunction.hs
--- a/src/CfnFlip/IntrinsicFunction.hs
+++ b/src/CfnFlip/IntrinsicFunction.hs
@@ -6,7 +6,7 @@
 
 import CfnFlip.Prelude
 
-import CfnFlip.Libyaml (Event(..), Tag(..))
+import CfnFlip.Libyaml (Event (..), Tag (..))
 
 -- | If an 'Event' is using a known @"!X"@, returns the @"Fn::Y"@ for it
 getIntrinsicFunction :: Event -> Maybe ByteString
@@ -33,26 +33,27 @@
   _ -> Nothing
 
 intrinsics :: [(String, ByteString)]
-intrinsics = map
-  toFn
-  [ "And"
-  , "Base64"
-  , "Cidr"
-  , "Equals"
-  , "FindInMap"
-  , "GetAtt"
-  , "GetAZs"
-  , "If"
-  , "ImportValue"
-  , "Join"
-  , "Not"
-  , "Or"
-  , "Ref"
-  , "Select"
-  , "Split"
-  , "Sub"
-  , "Transform"
-  ]
+intrinsics =
+  map
+    toFn
+    [ "And"
+    , "Base64"
+    , "Cidr"
+    , "Equals"
+    , "FindInMap"
+    , "GetAtt"
+    , "GetAZs"
+    , "If"
+    , "ImportValue"
+    , "Join"
+    , "Not"
+    , "Or"
+    , "Ref"
+    , "Select"
+    , "Split"
+    , "Sub"
+    , "Transform"
+    ]
  where
   toFn x
     | x == "Ref" = ("!" <> unpack x, encodeUtf8 x)
diff --git a/src/CfnFlip/JsonToYaml.hs b/src/CfnFlip/JsonToYaml.hs
--- a/src/CfnFlip/JsonToYaml.hs
+++ b/src/CfnFlip/JsonToYaml.hs
@@ -1,5 +1,5 @@
 module CfnFlip.JsonToYaml
-  ( InvalidYamlEvent(..)
+  ( InvalidYamlEvent (..)
   , translate
   ) where
 
@@ -14,23 +14,22 @@
   mS <- peekC
 
   case (e, mS) of
-    (EventMappingStart{}, Just s@EventScalar{})
+    (EventMappingStart {}, Just s@EventScalar {})
       | Just tag <- fromIntrinsicFunction s -> do
-        dropC 1 -- Scalar
-
-        await >>= traverse_
-          (\case
-            i | tag == "!GetAtt" -> do
-              (resource, attribute) <- awaitGetAtt i
-              let key = resource <> "." <> attribute
-              yield $ EventScalar key (UriTag tag) SingleQuoted Nothing
-
-            i -> do
-              yield $ setIntrinsicFunction tag i
-              when (startsMapOrSequence i) $ takeMapOrSequenceC i .| translate
-          )
+          dropC 1 -- Scalar
+          await
+            >>= traverse_
+              ( \case
+                  i | tag == "!GetAtt" -> do
+                    (resource, attribute) <- awaitGetAtt i
+                    let key = resource <> "." <> attribute
+                    yield $ EventScalar key (UriTag tag) SingleQuoted Nothing
+                  i -> do
+                    yield $ setIntrinsicFunction tag i
+                    when (startsMapOrSequence i) $ takeMapOrSequenceC i .| translate
+              )
 
-        dropC 1 -- MappingEnd
+          dropC 1 -- MappingEnd
     _ -> yield e
 
 awaitGetAtt
@@ -39,10 +38,13 @@
   results <- sequence [await, await, await]
 
   case results of
-    [Just (EventScalar r _ _ _), Just (EventScalar a _ _ _), Just EventSequenceEnd{}]
-      -> pure (r, a)
+    [ Just (EventScalar r _ _ _)
+      , Just (EventScalar a _ _ _)
+      , Just EventSequenceEnd {}
+      ] ->
+      pure (r, a)
     _ ->
       throwIO
         $ InvalidYamlEvent e
         $ "Unexpected GetAtt. Should be two Scalars and a SequenceEnd, saw: "
-        <> show results
+          <> show results
diff --git a/src/CfnFlip/Libyaml.hs b/src/CfnFlip/Libyaml.hs
--- a/src/CfnFlip/Libyaml.hs
+++ b/src/CfnFlip/Libyaml.hs
@@ -1,5 +1,5 @@
 module CfnFlip.Libyaml
-  ( InvalidYamlEvent(..)
+  ( InvalidYamlEvent (..)
   , makeMapping
   , makeSequence
   , startsMapOrSequence
@@ -13,11 +13,16 @@
 
 import CfnFlip.Conduit
 import Text.Libyaml
-  (Event(..), MappingStyle(..), SequenceStyle(..), Style(..), Tag(..))
+  ( Event (..)
+  , MappingStyle (..)
+  , SequenceStyle (..)
+  , Style (..)
+  , Tag (..)
+  )
 
 data InvalidYamlEvent = InvalidYamlEvent Event String
-  deriving stock Show
-  deriving anyclass Exception
+  deriving stock (Show)
+  deriving anyclass (Exception)
 
 makeMapping
   :: Monad m => ByteString -> ConduitT i Event m () -> ConduitT i Event m ()
@@ -35,20 +40,20 @@
 
 startsMapOrSequence :: Event -> Bool
 startsMapOrSequence = \case
-  EventMappingStart{} -> True
-  EventSequenceStart{} -> True
+  EventMappingStart {} -> True
+  EventSequenceStart {} -> True
   _ -> False
 
 isSameStart :: Event -> Event -> Bool
 x `isSameStart` y = case (x, y) of
-  (EventMappingStart{}, EventMappingStart{}) -> True
-  (EventSequenceStart{}, EventSequenceStart{}) -> True
+  (EventMappingStart {}, EventMappingStart {}) -> True
+  (EventSequenceStart {}, EventSequenceStart {}) -> True
   _ -> False
 
 isStartsEnd :: Event -> Event -> Bool
 x `isStartsEnd` y = case (x, y) of
-  (EventMappingStart{}, EventMappingEnd{}) -> True
-  (EventSequenceStart{}, EventSequenceEnd{}) -> True
+  (EventMappingStart {}, EventMappingEnd {}) -> True
+  (EventSequenceStart {}, EventSequenceEnd {}) -> True
   _ -> False
 
 takeMapOrSequenceC :: Monad m => Event -> ConduitT Event Event m ()
diff --git a/src/CfnFlip/Prelude.hs b/src/CfnFlip/Prelude.hs
--- a/src/CfnFlip/Prelude.hs
+++ b/src/CfnFlip/Prelude.hs
@@ -7,7 +7,7 @@
 import Prelude as X
 
 import Control.Monad as X (unless, when, (<=<))
-import Control.Monad.IO.Class as X (MonadIO(..))
+import Control.Monad.IO.Class as X (MonadIO (..))
 import Control.Monad.IO.Unlift as X (MonadUnliftIO)
 import Data.ByteString as X (ByteString)
 import Data.Foldable as X (for_, traverse_)
@@ -17,8 +17,13 @@
 import Data.Word as X (Word8)
 import UnliftIO.Exception as X (Exception, throwIO, throwString)
 
+{- FOURMOLU_DISABLE -}
+
 import qualified Data.ByteString as BS
 
+{- FOURMOLU_ENABLE -}
+
+{-# ANN module ("HLint: ignore Avoid restricted alias" :: String) #-}
 {-# ANN module ("HLint: ignore Avoid restricted qualification" :: String) #-}
 
 readFileBinary :: MonadIO m => FilePath -> m ByteString
diff --git a/src/CfnFlip/Yaml.hs b/src/CfnFlip/Yaml.hs
--- a/src/CfnFlip/Yaml.hs
+++ b/src/CfnFlip/Yaml.hs
@@ -1,5 +1,5 @@
-{-# OPTIONS_GHC -Wno-missing-signatures #-}
 {-# OPTIONS_GHC -Wno-missing-local-signatures #-}
+{-# OPTIONS_GHC -Wno-missing-signatures #-}
 
 module CfnFlip.Yaml
   ( encode
@@ -8,7 +8,7 @@
 
 import CfnFlip.Prelude
 
-import CfnFlip.Aeson (ToJSON)
+import CfnFlip.Aeson (FromJSON, ToJSON)
 import CfnFlip.Conduit
 import CfnFlip.IntrinsicFunction
 import CfnFlip.Libyaml
@@ -17,8 +17,8 @@
 import qualified Text.Libyaml as Libyaml
 
 newtype FromJSONError = FromJSONError String
-  deriving stock Show
-  deriving anyclass Exception
+  deriving stock (Show)
+  deriving anyclass (Exception)
 
 encode
   :: (MonadUnliftIO m, ToJSON a)
@@ -28,9 +28,9 @@
 encode c a =
   runConduitRes
     $ sourceList (Yaml.objToStream stringStyle a)
-    .| c
-    .| fixQuoting
-    .| Libyaml.encodeWith formatOptions
+      .| c
+      .| fixQuoting
+      .| Libyaml.encodeWith formatOptions
  where
   stringStyle = Yaml.defaultStringStyle
 
@@ -38,20 +38,19 @@
     Libyaml.setTagRendering Libyaml.renderUriTags Libyaml.defaultFormatOptions
 
 fixQuoting :: Monad m => ConduitT Event Event m ()
-fixQuoting = awaitForever $ yield . \case
-  e@(EventScalar x t _ z) | Just _ <- getIntrinsicFunction e ->
-    EventScalar x t SingleQuoted z
-  e -> e
+fixQuoting =
+  awaitForever
+    $ yield . \case
+      e@(EventScalar x t _ z)
+        | Just _ <- getIntrinsicFunction e ->
+            EventScalar x t SingleQuoted z
+      e -> e
 
--- We can't type this because Parse (nor ParserState) is exported
---
--- TODO: File a bug
---
--- decode
---   :: (MonadIO m, FromJSON a)
---   => ConduitT Event Event Yaml.Parse ()
---   -> ByteString
---   -> m a
+decode
+  :: (MonadIO m, FromJSON a)
+  => ConduitT Event Event Yaml.Parse ()
+  -> ByteString
+  -> m a
 decode c bs = liftIO $ do
   result <- Yaml.decodeHelper $ Libyaml.decode bs .| c
 
diff --git a/src/CfnFlip/YamlToJson.hs b/src/CfnFlip/YamlToJson.hs
--- a/src/CfnFlip/YamlToJson.hs
+++ b/src/CfnFlip/YamlToJson.hs
@@ -1,31 +1,31 @@
 module CfnFlip.YamlToJson
-  ( InvalidYamlEvent(..)
+  ( InvalidYamlEvent (..)
   , translate
   ) where
 
 import CfnFlip.Prelude
+import qualified Prelude as Unsafe (toEnum)
 
 import CfnFlip.Conduit
 import CfnFlip.IntrinsicFunction
 import CfnFlip.Libyaml
 import qualified Data.ByteString as BS
-import qualified Prelude as Unsafe (toEnum)
 
 translate :: MonadIO m => ConduitT Event Event m ()
 translate = awaitForever $ \case
   e@(EventScalar x (UriTag "!GetAtt") _ _) -> do
     (resource, attribute) <- maybe (throwInvalidGetAtt e x) pure $ parseGetAtt x
 
-    makeMapping "Fn::GetAtt" $ makeSequence $ yieldMany
-      [ EventScalar resource NoTag Plain Nothing
-      , EventScalar attribute NoTag Plain Nothing
-      ]
-
+    makeMapping "Fn::GetAtt"
+      $ makeSequence
+      $ yieldMany
+        [ EventScalar resource NoTag Plain Nothing
+        , EventScalar attribute NoTag Plain Nothing
+        ]
   e | Just tag <- getIntrinsicFunction e -> do
     makeMapping tag $ do
       yield e
       when (startsMapOrSequence e) $ takeMapOrSequenceC e .| translate
-
   e -> yield e
 
 parseGetAtt :: ByteString -> Maybe (ByteString, ByteString)
@@ -38,7 +38,7 @@
   throwIO
     $ InvalidYamlEvent e
     $ "!GetAtt shoule be \"Resource.Attribute\", saw "
-    <> show x
+      <> show x
 
 charToWord8 :: Char -> Word8
 charToWord8 = Unsafe.toEnum . fromEnum
diff --git a/test/CfnFlipSpec.hs b/test/CfnFlipSpec.hs
--- a/test/CfnFlipSpec.hs
+++ b/test/CfnFlipSpec.hs
@@ -22,8 +22,9 @@
   describe "yaml-to-json" $ do
     for_ yamls $ \yaml -> do
       it yaml $ do
-        when (yaml == "test/examples/test_json_data.yaml") $ pendingWith
-          "Converting Scalar strings of JSON to actual Mapping objects"
+        when (yaml == "test/examples/test_json_data.yaml")
+          $ pendingWith
+            "Converting Scalar strings of JSON to actual Mapping objects"
 
         actual <- yamlFileToJson @_ @Value yaml
         expected <- eitherDecodeFileStrictThrow @_ @Value $ yaml -<.> "json"
@@ -43,9 +44,9 @@
           runResourceT $ runConduit $ Libyaml.decodeFile yaml .| sinkList
         actual <-
           runConduit
-          $ sourceList expected
-          .| YamlToJson.translate
-          .| JsonToYaml.translate
-          .| sinkList
+            $ sourceList expected
+              .| YamlToJson.translate
+              .| JsonToYaml.translate
+              .| sinkList
 
         actual `shouldBe` expected
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -1,2 +1,2 @@
-{-# OPTIONS_GHC -fno-warn-missing-export-lists #-}
 {-# OPTIONS_GHC -F -pgmF hspec-discover #-}
+{-# OPTIONS_GHC -fno-warn-missing-export-lists #-}
