diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@
 [1]: http://semver.org/spec/v2.0.0.html
 [2]: https://github.com/roman/Haskell-teardown/libraries/teardown/CHANGELOG.md
 
+## v0.0.0.2
+
+* Add `pretty-show` dependency
+* Improve upon pretty instances of types from this library
+* Expose internal modules for flexibility
+
 ## v0.0.0.1
 
 * Relax lower version bounds for `prettyprinter`, `containers`, `exceptions`,
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -60,7 +60,7 @@
 ## Development
 [![Build Status](https://travis-ci.org/roman/Haskell-componentm.svg?branch=master)](https://travis-ci.org/roman/Haskell-componentm)
 [![Hackage Dependencies](https://img.shields.io/hackage-deps/v/componentm.svg)](http://packdeps.haskellers.com/feed?needle=componentm)
-[![Github](https://img.shields.io/github/commits-since/roman/haskell-componentm/v0.0.0.1.svg)](https://img.shields.io/github/commits-since/roman/haskell-componentm/v0.0.0.1.svg)
+[![Github](https://img.shields.io/github/commits-since/roman/haskell-componentm/v0.0.0.2.svg)](https://img.shields.io/github/commits-since/roman/haskell-componentm/v0.0.0.2.svg)
 
 This library is intended to be minimal, providing a few functions that work
 reliably among many different kind of projects. If you want to contribute, Pull
diff --git a/componentm.cabal b/componentm.cabal
--- a/componentm.cabal
+++ b/componentm.cabal
@@ -1,9 +1,9 @@
 cabal-version: >=1.10
 name: componentm
-version: 0.0.0.1
+version: 0.0.0.2
 license: MIT
 license-file: LICENSE
-copyright: © 2017-2018 Roman Gonzalez
+copyright: © 2017-current Roman Gonzalez
 maintainer: open-source@roman-gonzalez.info
 author: Roman Gonzalez
 stability: alpha (experimental)
@@ -17,9 +17,6 @@
     It then provides a Monadic interface to compose multiple
     resources without having to deal with cleanup operations
     explicitely.
-    .
-    Check Control.Monad.Component.Tutorial for an example and
-    more information.
 category: System
 build-type: Simple
 extra-source-files:
@@ -33,10 +30,11 @@
 library
     exposed-modules:
         Control.Monad.Component
-    hs-source-dirs: src
-    other-modules:
         Control.Monad.Component.Internal.Types
         Control.Monad.Component.Internal.Core
+    hs-source-dirs: src
+    other-modules:
+        Paths_componentm
     default-language: Haskell2010
     ghc-options: -Wall -Wincomplete-uni-patterns
                  -Wincomplete-record-updates
@@ -45,6 +43,7 @@
         containers >=0.5.7,
         deepseq >=1.4.2,
         exceptions >=0.8.3,
+        pretty-show >=1.6.13,
         prettyprinter >=1.1,
         rio >=0.0.3,
         teardown >=0.3
@@ -63,6 +62,7 @@
         base >=4.8 && <5,
         componentm -any,
         containers >=0.5.7,
+        pretty-show >=1.6.13,
         prettyprinter >=1.1,
         rio >=0.0.3,
         tasty >=0.11.2,
diff --git a/src/Control/Monad/Component.hs b/src/Control/Monad/Component.hs
--- a/src/Control/Monad/Component.hs
+++ b/src/Control/Monad/Component.hs
@@ -59,12 +59,10 @@
   , runComponentM
   , runComponentM1
 
-
   -- * Error Records
   -- $errors
   , ComponentError (..)
   , ComponentBuildError (..)
-
 
   -- * 'ComponentM' tracing accessors
   , ComponentEvent (..)
diff --git a/src/Control/Monad/Component/Internal/Types.hs b/src/Control/Monad/Component/Internal/Types.hs
--- a/src/Control/Monad/Component/Internal/Types.hs
+++ b/src/Control/Monad/Component/Internal/Types.hs
@@ -29,6 +29,8 @@
 import           Control.Teardown          (Teardown, TeardownResult,
                                             newTeardown)
 
+import           Text.Show.Pretty          (ppShow)
+
 --------------------------------------------------------------------------------
 
 -- | Exception thrown by the 'runComponentM' family of functions
@@ -55,6 +57,30 @@
 
 instance Exception ComponentError
 
+instance Pretty ComponentError where
+  pretty err =
+    case err of
+      ComponentBuildFailed errList teardownResult ->
+        "Application failed on initialization, following are the exceptions that made it failed:"
+        <> Pretty.hardline
+        <> Pretty.hardline
+        <> Pretty.indent 2 (Pretty.vsep $ map (\buildErr -> "* " <> pretty buildErr <> Pretty.hardline) errList)
+        <> Pretty.hardline
+        <> "Following, we have the information of application resources cleanup:"
+        <> Pretty.hardline
+        <> Pretty.hardline
+        <> pretty teardownResult
+
+      ComponentRuntimeFailed runtimeErr teardownResult ->
+        "Application failed at runtime, following is the exception that made the app failed:"
+        <> Pretty.hardline
+        <> Pretty.hardline
+        <> Pretty.indent 2 (pretty $ ppShow runtimeErr)
+        <> Pretty.hardline
+        <> "Following, we have the information of application resources cleanup:"
+        <> Pretty.hardline
+        <> pretty teardownResult
+
 -- | Exception raised on the execution of 'IO' sub-routines used when
 -- constructing 'ComponentM' values (e.g. 'buildComponent')
 data ComponentBuildError
@@ -70,6 +96,31 @@
 
 instance Exception ComponentBuildError
 
+instance Pretty ComponentBuildError where
+  pretty err =
+    case err of
+      DuplicatedComponentKeyDetected desc ->
+        "DuplicateComponentKeyDetected" <+> pretty (show desc) <+> "- please, make sure that component names are unique"
+
+      ComponentAllocationFailed desc componentErr ->
+        "ComponentAllocationFailed" <+> pretty (show desc) <+> "- the following error was reported:"
+        <> Pretty.nest 2 (Pretty.hardline
+                          <> "|" <> Pretty.hardline
+                          <> Pretty.nest 4 ("`-" <+> pretty (ppShow componentErr)))
+
+
+      ComponentErrorThrown thrownErr ->
+        "ComponentErrorThrown - the following error was thrown using the `throwM` function:"
+        <> Pretty.nest 2 (Pretty.hardline
+                          <> "|" <> Pretty.hardline
+                          <> Pretty.nest 4 ("`-" <+> pretty (ppShow thrownErr)))
+
+      ComponentIOLiftFailed ioErr ->
+        "ComponentIOLiftFailed - the following error was thrown from an `IO` operation invoked via `liftIO`:"
+        <> Pretty.nest 2 (Pretty.hardline
+                          <> "|" <> Pretty.hardline
+                          <> Pretty.nest 4 ("`-" <+> pretty (ppShow ioErr)))
+
 type Description = Text
 
 -- | Contains metadata about the build of a resource from a 'ComponentM' value
@@ -98,7 +149,7 @@
         if isJust buildFailure then
           [
             Pretty.hardline
-          , Pretty.pipe <+> pretty (show buildFailure)
+          , Pretty.pipe <+> pretty (ppShow buildFailure)
           ]
         else
           []
@@ -123,9 +174,11 @@
 
 instance Pretty BuildResult where
   pretty (BuildResult builds) =
-      pretty ("Application Initialized" :: Text)
+      "Following, we have the information of the application resources initialization:"
       <> Pretty.hardline
+      <> Pretty.hardline
       <> Pretty.vsep (map pretty builds)
+      <> Pretty.hardline
 
 instance Display BuildResult where
   display buildResult =
@@ -136,16 +189,34 @@
 data ComponentEvent
   = ComponentBuilt !BuildResult
   | ComponentReleased !TeardownResult
+  | ComponentErrorDetected !ComponentError
 
 instance Pretty ComponentEvent where
   pretty ev =
     case ev of
       ComponentBuilt buildResult ->
-        pretty buildResult
+        Pretty.hardline
+        <> "# Application Initialized"
+        <> Pretty.hardline
+        <> Pretty.hardline
+        <> pretty buildResult
+        <> Pretty.hardline
+
       ComponentReleased teardownResult ->
-        "Application Teardown"
+        Pretty.hardline
+        <> "# Application Finished"
         <> Pretty.hardline
+        <> Pretty.hardline
         <> pretty teardownResult
+        <> Pretty.hardline
+
+      ComponentErrorDetected err ->
+        Pretty.hardline
+        <> "# Application Failed"
+        <> Pretty.hardline
+        <> Pretty.hardline
+        <> pretty err
+        <> Pretty.hardline
 
 instance Display ComponentEvent where
   display = displayShow . pretty
