diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for interval-algebra
 
+## 0.7.1
+
+* Adds `Safe` language extension to all library modules.
+
 ## 0.7.0
 
 * Adds a `Bifunctor` instance for `PairedInterval`s.
diff --git a/interval-algebra.cabal b/interval-algebra.cabal
--- a/interval-algebra.cabal
+++ b/interval-algebra.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.2
 name:           interval-algebra
-version:        0.7.0
+version:        0.7.1
 synopsis:       An implementation of Allen's interval algebra for temporal logic
 description:    Please see the README on GitHub at <https://github.com/novisci/interval-algebra>
 category:       Algebra,Time
diff --git a/src/IntervalAlgebra.hs b/src/IntervalAlgebra.hs
--- a/src/IntervalAlgebra.hs
+++ b/src/IntervalAlgebra.hs
@@ -40,6 +40,7 @@
 This module is under development and the API may change in the future.
 -}
 
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
@@ -85,7 +86,7 @@
 import Data.Semigroup ( Semigroup((<>)) )
 import Data.Set(Set, fromList, difference, intersection, union, map, toList)
 import Data.Ord( Ord(..), Ordering(..))
-import GHC.Base (Applicative(pure))
+import Control.Applicative (Applicative(pure))
 
 {- | An @'Interval' a@ is a pair of @a@s \( (x, y) \text{ where } x < y\). The
 @'parseInterval'@ function that returns @'Left'@ error if \(y < x\) and
diff --git a/src/IntervalAlgebra/Arbitrary.hs b/src/IntervalAlgebra/Arbitrary.hs
--- a/src/IntervalAlgebra/Arbitrary.hs
+++ b/src/IntervalAlgebra/Arbitrary.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE FlexibleInstances #-}
 {-|
 Module      : Generate arbitrary Intervals
 Description : Functions for generating arbitrary intervals
@@ -8,14 +6,20 @@
 Maintainer  : bsaul@novisci.com
 Stability   : experimental
 -}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE Safe #-}
+
 module IntervalAlgebra.Arbitrary() where
 
-import Test.QuickCheck ( Arbitrary(arbitrary, shrink) )
-import GHC.Base(Int, (.), liftM2 )
-import Control.Applicative((<$>))
-import GHC.Num ( Num((+), negate) )
-import IntervalAlgebra (Interval, beginerval)
-import Data.Time as DT ( Day(ModifiedJulianDay), toModifiedJulianDay)
+import Test.QuickCheck      ( Arbitrary(arbitrary, shrink) )
+import GHC.Int              ( Int )
+import GHC.Num              ( Num((+), negate) )
+import Control.Applicative  ( (<$>) )
+import Control.Monad        ( liftM2 )
+import IntervalAlgebra      (Interval, beginerval)
+import Data.Function        ( (.) )
+import Data.Time as DT      ( Day(ModifiedJulianDay), toModifiedJulianDay)
 
 instance Arbitrary (Interval Int) where
   arbitrary = liftM2 beginerval arbitrary arbitrary
diff --git a/src/IntervalAlgebra/IntervalUtilities.hs b/src/IntervalAlgebra/IntervalUtilities.hs
--- a/src/IntervalAlgebra/IntervalUtilities.hs
+++ b/src/IntervalAlgebra/IntervalUtilities.hs
@@ -9,6 +9,7 @@
 In the examples below, @iv@ is a synonym for 'beginerval' used to save space.
 -}
 
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FlexibleContexts #-}
@@ -58,7 +59,7 @@
 
 ) where
 
-import GHC.Base         ( (<*>), seq)
+import Prelude          ( (<*>), seq)
 import GHC.Show         ( Show )
 import GHC.Num          ( )
 import GHC.Int          ( Int ) 
@@ -523,7 +524,8 @@
 --   invalid and contains any sequential pairs of intervals with an @IntervalRelation@,
 --   other than 'Meets', then the function returns an empty list. 
 foldMeetingSafe :: ( IntervalAlgebraic (PairedInterval b) a, Eq b) =>
-           [ PairedInterval b a ] -- ^ Be sure this only contains intervals that sequentially 'meet'.
+           [ PairedInterval b a ] -- ^ Be sure this only contains intervals 
+                                  --   that sequentially 'meets'.
         -> [ PairedInterval b a ]
 foldMeetingSafe l = maybe [] (getMeeting . foldMeeting) (parseMeeting l)
 
diff --git a/src/IntervalAlgebra/PairedInterval.hs b/src/IntervalAlgebra/PairedInterval.hs
--- a/src/IntervalAlgebra/PairedInterval.hs
+++ b/src/IntervalAlgebra/PairedInterval.hs
@@ -6,13 +6,15 @@
 Maintainer  : bsaul@novisci.com
 Stability   : experimental
 -}
-
+{-# OPTIONS_HADDOCK prune #-}
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FlexibleContexts #-}
 
 module IntervalAlgebra.PairedInterval (
       PairedInterval
+    , Empty
     , mkPairedInterval
     , getPairData
     , intervals
@@ -79,7 +81,7 @@
 intervals :: (Ord a, Show a) => [PairedInterval b a] -> [Interval a]
 intervals = map getInterval
 
--- Empty is used to trivially lift an @Interval a@ into a @PairedInterval@
+-- | Empty is used to trivially lift an @Interval a@ into a @PairedInterval@.
 data Empty = Empty deriving (Eq, Ord, Show)
 instance Semigroup Empty where 
     x <> y = Empty
