diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for valida
 
+## 1.1.0 (Aug 25, 2021)
+* Add `withDefault` combinator.
+* Make `optionally` preserve output of given validator.
+* Remove redundant `fixV` usage from examples.
+
 ## 1.0.0 (Aug 24, 2021)
 * Add `profunctors` dependency.
 * Add `Profunctor` instance for `Validator`.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -21,12 +21,14 @@
   { inpName  :: String
   , inpAge   :: Int
   , inpEmail :: Maybe String
+  , inpFreeCake :: Maybe Bool
   } deriving (Show)
 
 data ValidInput = ValidInput
   { vInpName  :: String
   , vInpAge   :: Int
   , vInpEmail :: Maybe String
+  , vFreeCake :: Bool
   } deriving (Show)
 
 data FormErr
@@ -35,6 +37,7 @@
   | NoAtCharInMail
   | NoPeriodInMail
   | InvalidEmailLength
+  | YouMustGetFreeCake
   deriving (Show)
 
 -- | Validator for each field in the input form - built using 'Validator' combinators.
@@ -48,19 +51,21 @@
     <*> inpEmail -?> optionally (minLengthOf 5 InvalidEmailLength
         <> mustContain '@' NoAtCharInMail
         <> mustContain '.' NoPeriodInMail)
+    <*> inpFreeCake -?> failureUnless id YouMustGetFreeCake `withDefault` True
 
 goodInput :: InputForm
-goodInput = InpForm "John Doe" 42 Nothing
+goodInput = InpForm "John Doe" 42 Nothing (Just True)
 
 badInput :: InputForm
-badInput = InpForm "John Doe" 17 (Just "@")
+badInput = InpForm "John Doe" 17 (Just "@") Nothing
 
 main :: IO ()
 main = do
     print (runValidator inpFormValidator goodInput)
-    -- Prints- Success (ValidInput {vInpName = "John Doe", vInpAge = 42, vInpEmail = Nothing})
+    -- Prints- Success (ValidInput {vInpName = "John Doe", vInpAge = 42, vInpEmail = Nothing, vFreeCake = true})
     print (runValidator inpFormValidator badInput)
     -- Prints- Failure (InvalidAge :| [InvalidEmailLength])
+
 ```
 
 You can also find more examples [here](./examples/Main.hs).
diff --git a/src/Valida/Combinators.hs b/src/Valida/Combinators.hs
--- a/src/Valida/Combinators.hs
+++ b/src/Valida/Combinators.hs
@@ -70,8 +70,9 @@
     , valueAbove'
     , valueBelow'
     , valueWithin'
-      -- * Type specific 'Validator's
+      -- * Optional 'Validator's
     , optionally
+    , withDefault
     ) where
 
 import Data.Ix            (Ix (inRange))
@@ -571,13 +572,31 @@
 
 >>> runValidator (optionally (failureIf even "Even")) (Just 5)
 Success (Just 5)
->>> runValidator (optionally (failureIf even "Even"))) (Just 6)
+>>> runValidator (optionally (failureIf even "Even")) (Just 6)
 Failure ("Even" :| [])
 >>> runValidator (optionally (failureIf even "Even")) Nothing
 Success Nothing
 -}
-optionally :: Validator e a x -> Validator e (Maybe a) (Maybe a)
-optionally (Validator v) = Validator $ \x -> maybe (Success x) (fmap (const x) . v) x
+optionally :: Validator e inp a -> Validator e (Maybe inp) (Maybe a)
+optionally (Validator v) = Validator $ maybe (Success Nothing) (fmap Just . v)
+
+{- | Build a validator that runs given validator only if input is 'Just'. Yields default value otherwise.
+
+Yields 'Success' when input is 'Nothing', and wrapped around the default value.
+
+@vald \`withDefault\` deflt = 'Data.Maybe.fromMaybe' deflt '<$>' 'optionally' vald@
+
+==== __Examples__
+
+>>> runValidator (failureIf even "Even" `withDefault` 0) (Just 5)
+Success 5
+>>> runValidator (failureIf even "Even" `withDefault` 0) (Just 6)
+Failure ("Even" :| [])
+>>> runValidator (failureIf even "Even" `withDefault` 0) Nothing
+Success 0
+-}
+withDefault :: Validator e inp a -> a -> Validator e (Maybe inp) a
+withDefault (Validator v) deflt = Validator $ maybe (Success deflt) v
 
 -- | Utility to convert a regular predicate function to a 'Validator'. __INTERNAL__
 validatorFrom :: (a -> Bool) -> e -> Validator e a a
diff --git a/src/Valida/Validator.hs b/src/Valida/Validator.hs
--- a/src/Valida/Validator.hs
+++ b/src/Valida/Validator.hs
@@ -85,8 +85,8 @@
 
 __Examples__
 
->>> let v1 = fixV (failureIf (==2) "IsTwo")
->>> let v2 = fixV (failureIf even "IsEven")
+>>> let v1 = failureIf (==2) "IsTwo"
+>>> let v2 = failureIf even "IsEven"
 >>> runValidator (v1 <> v2) 5
 Success 5
 >>> runValidator (v1 <> v2) 4
@@ -119,11 +119,11 @@
 
 __Examples__
 
->>> runValidator (lmap fst (fixV $ failureIf (==2) "IsTwo")) (3, 2)
+>>> runValidator (lmap fst (failureIf (==2) "IsTwo")) (3, 2)
 Success 3
->>> runValidator (lmap snd (fixV $ failureIf (==2) "IsTwo")) (3, 2)
+>>> runValidator (lmap snd (failureIf (==2) "IsTwo")) (3, 2)
 Failure ("IsTwo" :| [])
->>> runValidator (rmap (+1) (fixV $ failureIf (==2) "IsTwo")) 3
+>>> runValidator (rmap (+1) (failureIf (==2) "IsTwo")) 3
 Failure ("IsTwo" :| [])
 -}
 instance Profunctor (Validator e) where
diff --git a/valida.cabal b/valida.cabal
--- a/valida.cabal
+++ b/valida.cabal
@@ -1,65 +1,65 @@
-cabal-version: 1.12
-
--- This file has been generated from package.yaml by hpack version 0.34.4.
---
--- see: https://github.com/sol/hpack
-
-name:           valida
-version:        1.0.0
-synopsis:       Simple applicative validation for product types, batteries included!
-description:    This package provides an applicative validator with support for contravariance. This makes building validators for product types idiomatic and simple. Many common utilities for building validators are also included.
-category:       Validation, Data
-homepage:       https://github.com/TotallyNotChase/valida#readme
-bug-reports:    https://github.com/TotallyNotChase/valida/issues
-author:         Chase
-maintainer:     totallynotchase42@gmail.com
-copyright:      TotallyNotChase
-license:        MIT
-license-file:   LICENSE
-build-type:     Simple
-extra-source-files:
-    README.md
-    ChangeLog.md
-
-source-repository head
-  type: git
-  location: https://github.com/TotallyNotChase/valida
-
-library
-  exposed-modules:
-      Valida
-      Valida.Combinators
-  other-modules:
-      Valida.Utils
-      Valida.Validation
-      Valida.ValidationUtils
-      Valida.Validator
-      Paths_valida
-  hs-source-dirs:
-      src
-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wmissed-specialisations -Wmissing-export-lists -Wpartial-fields -Wredundant-constraints -O2
-  build-depends:
-      base >=4.12 && <5
-    , profunctors >=5
-  default-language: Haskell2010
-
-test-suite valida-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
-  other-modules:
-      Gen
-      Utils
-      Paths_valida
-  hs-source-dirs:
-      test
-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wmissed-specialisations -Wmissing-export-lists -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
-  build-depends:
-      base >=4.12 && <5
-    , profunctors >=5
-    , smallcheck >=1.2
-    , tasty
-    , tasty-hunit
-    , tasty-quickcheck
-    , tasty-smallcheck
-    , valida
-  default-language: Haskell2010
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.34.4.
+--
+-- see: https://github.com/sol/hpack
+
+name:           valida
+version:        1.1.0
+synopsis:       Simple applicative validation for product types, batteries included!
+description:    This package provides an applicative validator with support for contravariance. This makes building validators for product types idiomatic and simple. Many common utilities for building validators are also included.
+category:       Validation, Data
+homepage:       https://github.com/TotallyNotChase/valida#readme
+bug-reports:    https://github.com/TotallyNotChase/valida/issues
+author:         Chase
+maintainer:     totallynotchase42@gmail.com
+copyright:      TotallyNotChase
+license:        MIT
+license-file:   LICENSE
+build-type:     Simple
+extra-source-files:
+    README.md
+    ChangeLog.md
+
+source-repository head
+  type: git
+  location: https://github.com/TotallyNotChase/valida
+
+library
+  exposed-modules:
+      Valida
+      Valida.Combinators
+  other-modules:
+      Valida.Utils
+      Valida.Validation
+      Valida.ValidationUtils
+      Valida.Validator
+      Paths_valida
+  hs-source-dirs:
+      src
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wmissed-specialisations -Wmissing-export-lists -Wpartial-fields -Wredundant-constraints -O2
+  build-depends:
+      base >=4.12 && <5
+    , profunctors >=5
+  default-language: Haskell2010
+
+test-suite valida-test
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  other-modules:
+      Gen
+      Utils
+      Paths_valida
+  hs-source-dirs:
+      test
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-uni-patterns -Wmissed-specialisations -Wmissing-export-lists -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
+  build-depends:
+      base >=4.12 && <5
+    , profunctors >=5
+    , smallcheck >=1.2
+    , tasty
+    , tasty-hunit
+    , tasty-quickcheck
+    , tasty-smallcheck
+    , valida
+  default-language: Haskell2010
