diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,12 @@
 # Changelog for `annotated-exception`
 
+## 0.3.0.1
+
+- [#31](https://github.com/parsonsmatt/annotated-exception/pull/31)
+    - The `Show` instance for `AnnotatedException` attempts to peek into the
+      `SomeException` to provide a more useful exception type. Also gives the
+      output of `show`.
+
 ## 0.3.0.0
 
 - [#30](https://github.com/parsonsmatt/annotated-exception/pull/30)
diff --git a/annotated-exception.cabal b/annotated-exception.cabal
--- a/annotated-exception.cabal
+++ b/annotated-exception.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           annotated-exception
-version:        0.3.0.0
+version:        0.3.0.1
 synopsis:       Exceptions, with checkpoints and context.
 description:    Please see the README on Github at <https://github.com/parsonsmatt/annotated-exception#readme>
 category:       Control
diff --git a/src/Control/Exception/Annotated.hs b/src/Control/Exception/Annotated.hs
--- a/src/Control/Exception/Annotated.hs
+++ b/src/Control/Exception/Annotated.hs
@@ -125,13 +125,21 @@
     displayException (AnnotatedException {..}) =
         unlines
             [ "! AnnotatedException !"
-            , "Underlying exception type: " <> show (typeOf exception)
+            , "Underlying exception type: " <> show exceptionType
+            , ""
+            , "show:"
+            , "\t" <> show exception
+            , ""
             , "displayException:"
             , "\t" <> Safe.displayException exception
             ]
         <> annotationsMessage
         <> callStackMessage
       where
+        exceptionType =
+            case Safe.toException exception of
+                SomeException innerException ->
+                    typeOf innerException
         (callStacks, otherAnnotations) = tryAnnotations @CallStack annotations
         callStackMessage =
             case listToMaybe callStacks of
diff --git a/test/Control/Exception/AnnotatedSpec.hs b/test/Control/Exception/AnnotatedSpec.hs
--- a/test/Control/Exception/AnnotatedSpec.hs
+++ b/test/Control/Exception/AnnotatedSpec.hs
@@ -14,10 +14,10 @@
 import Control.Exception.Annotated
 import qualified Control.Exception.Safe as Safe
 import Data.Annotation
-import GHC.Stack
-import Data.Typeable
 import Data.AnnotationSpec ()
 import Data.Maybe
+import Data.Typeable
+import GHC.Stack
 
 instance Eq CallStack where
     a == b = show a == show b
@@ -61,6 +61,10 @@
                 `shouldBe`
                     [ "! AnnotatedException !"
                     , "Underlying exception type: TestException"
+                    , ""
+                    , "show:"
+                    , "\tTestException"
+                    , ""
                     , "displayException:"
                     , "\tTestException"
                     , ""
@@ -71,12 +75,32 @@
                 `shouldBe`
                     [ "! AnnotatedException !"
                     , "Underlying exception type: TestException"
+                    , ""
+                    , "show:"
+                    , "\tTestException"
+                    , ""
                     , "displayException:"
                     , "\tTestException"
                     , "Annotations:"
                     , "\t * Annotation @[Char] \"asdf\""
                     , "(no callstack available)"
                     ]
+        it "shows underlying exception type" $ do
+            Left exn <- try $ throwWithCallStack (AnnotatedException [Annotation @String "asdf"] TestException)
+            let resultLines =
+                    [ "! AnnotatedException !"
+                    , "Underlying exception type: TestException"
+                    , ""
+                    , "show:"
+                    , "\tTestException"
+                    , ""
+                    , "displayException:"
+                    , "\tTestException"
+                    , "Annotations:"
+                    , "\t * Annotation @[Char] \"asdf\""
+                    ]
+            take (length resultLines) (lines (displayException (exn :: AnnotatedException SomeException))) `shouldBe`
+                resultLines
 
     describe "AnnotatedException can fromException a" $ do
         it "different type" $ do
