diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -4,14 +4,18 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
+## [0.6.2] - 2021-01-31
+### Changed
+- `strengthen` no longer returns an `Either`, since the proof
+  that it should always succeed is in its constraints.
+- correct `success` documentation 
+
 ## [0.6.1] - 2020-08-02
 ### Changed
 - upper bound on QuickCheck: <2.14 -> <2.15
 
 ## [0.6] - 2020-07-21
 ### Changed
-- `strengthen` no longer returns an `Either`, since the proof
-  that it should always succeed is in its constraints.
 - `validate` now takes a `Proxy` as its first argument.
 - All uses of prettyprinter are now just `Text`
 
diff --git a/refined.cabal b/refined.cabal
--- a/refined.cabal
+++ b/refined.cabal
@@ -3,7 +3,7 @@
 name:
   refined
 version:
-  0.6.1
+  0.6.2
 synopsis:
   Refinement types with static and runtime checking
 description:
diff --git a/src/Refined.hs b/src/Refined.hs
--- a/src/Refined.hs
+++ b/src/Refined.hs
@@ -1314,8 +1314,8 @@
 --   @since 0.4.2.2
 strengthen :: forall p p' x. (Predicate p x, Predicate p' x)
   => Refined p x
-  -> Refined (p && p') x
-strengthen = coerce
+  -> Either RefineException (Refined (p && p') x)
+strengthen = unrefine .> refine
 {-# inlineable strengthen #-}
 
 --------------------------------------------------------------------------------
@@ -1594,10 +1594,9 @@
 --   data ContainsLetterE = ContainsLetterE
 --
 --   instance Predicate ContainsLetterE 'Text' where
---     validate _ t = do
---       if 'Data.Text.any' ('==' \'e\') t
---       then 'Nothing'
---       else 'success'
+--     validate p t
+--       | 'Data.Text.any' (== \'e\') t = 'success'
+--       | otherwise = Just $ 'throwRefineException' (typeRep p) "Text doesn't contain letter \'e\'".
 --   @
 --
 --   @since 0.5
