diff --git a/casr-logbook.cabal b/casr-logbook.cabal
--- a/casr-logbook.cabal
+++ b/casr-logbook.cabal
@@ -1,5 +1,5 @@
 name:               casr-logbook
-version:            0.6.13
+version:            0.7.0
 license:            OtherLicense
 license-file:       LICENSE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
@@ -30,14 +30,14 @@
 
   build-depends:
                     base >= 4.8 && < 5
-                    , containers >= 0.4 && < 0.6
-                    , lucid >= 2.9 && < 3
-                    , digit >= 0.8 && < 0.9
-                    , time >= 1.5 && < 2
+                    , containers >= 0.4 && < 0.7
                     , lucid >= 2.9 && < 3
-                    , lens >= 4.1 && < 5
-                    , text >= 1.2 && < 1.3
-                    , attoparsec == 0.13.2.2
+                    , digit >= 0.8 && < 1
+                    , time >= 1.5 && < 1.13
+                    , lucid >= 2.9
+                    , lens >= 4.1 && < 6
+                    , text >= 1.2 && < 3
+                    , attoparsec >= 0.13 && < 0.15
   ghc-options:
                     -Wall
 
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+0.7.0
+
+* Widen dependency versions
+* More functions
+
 0.6.13
 
 * Update dependencies
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/Image.hs b/src/Data/Aviation/Casr/Logbook/Meta/Image.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/Image.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/Image.hs
@@ -5,9 +5,13 @@
   Image(Image)
 , HasImage(..)
 , imageUriType
+, imageurismall'
+, imagesource'
+, imagename'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category ( Category((.)) )
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Aviation.Casr.Logbook.Meta.ImageType ( ImageType )
 import Data.Eq(Eq)
 import Data.Maybe(Maybe(..))
@@ -32,3 +36,18 @@
   -> Image
 imageUriType s t =
   Image s Nothing t Nothing Nothing
+
+imageurismall' ::
+  HasImage c => Traversal' c String
+imageurismall' =
+  imageurismall . _Just
+
+imagesource' ::
+  HasImage c => Traversal' c String
+imagesource' =
+  imagesource . _Just
+
+imagename' ::
+  HasImage c => Traversal' c String
+imagename' =
+  imagename . _Just
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs b/src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/TrackLog.hs
@@ -5,9 +5,12 @@
   TrackLog(TrackLog)
 , HasTrackLog(..)
 , tracklogUriType
+, tracklogsource'
+, tracklogname'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category ( Category((.)) )
+import Control.Lens ( _Just, makeClassy, Traversal' )
 import Data.Aviation.Casr.Logbook.Meta.TrackLogType
     ( TrackLogType )
 import Data.Eq(Eq)
@@ -32,3 +35,15 @@
   -> TrackLog
 tracklogUriType s t =
   TrackLog s t Nothing Nothing
+
+tracklogsource' ::
+  HasTrackLog c =>
+  Traversal' c String
+tracklogsource' =
+  tracklogsource . _Just
+
+tracklogname' ::
+  HasTrackLog c =>
+  Traversal' c String
+tracklogname' =
+  tracklogname . _Just
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs b/src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/TrackLogs.hs
@@ -10,7 +10,7 @@
 ) where
 
 import Control.Lens(makeClassy, makeWrapped)
-import Data.Aviation.Casr.Logbook.Meta.TrackLog
+import Data.Aviation.Casr.Logbook.Meta.TrackLog ( TrackLog )
 import Data.Eq(Eq)
 import Data.Monoid ( (<>), Monoid(mempty) )
 import Data.Ord(Ord)
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/Video.hs b/src/Data/Aviation/Casr/Logbook/Meta/Video.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/Video.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/Video.hs
@@ -5,9 +5,12 @@
   Video(Video)
 , HasVideo(..)
 , videoUriType
+, videosource'
+, videoname'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Aviation.Casr.Logbook.Meta.VideoType ( VideoType )
 import Data.Eq(Eq)
 import Data.Maybe(Maybe(..))
@@ -31,3 +34,15 @@
   -> Video
 videoUriType s t =
   Video s t Nothing Nothing
+
+videosource' ::
+  HasVideo c =>
+  Traversal' c String
+videosource' =
+  videosource . _Just
+
+videoname' ::
+  HasVideo c =>
+  Traversal' c String
+videoname' =
+  videoname . _Just
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs b/src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/Visualisation.hs
@@ -4,9 +4,11 @@
 module Data.Aviation.Casr.Logbook.Meta.Visualisation(
   Visualisation(Doarama)
 , HasVisualisation(..)
+, doaramaname'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category ( Category((.)) )
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Eq(Eq)
 import Data.Maybe(Maybe)
 import Data.Ord(Ord)
@@ -21,3 +23,9 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''Visualisation
+
+doaramaname' ::
+  HasVisualisation c =>
+  Traversal' c String
+doaramaname' =
+  doaramaname . _Just
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/Html.hs b/src/Data/Aviation/Casr/Logbook/Reports/Html.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/Html.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/Html.hs
@@ -12,24 +12,43 @@
 
 import Control.Category((.))
 import Control.Lens((^.), _Wrapped)
-import Data.Aviation.Casr.Logbook.Types(
-    landingTime
-  , daytime
-  , point
-  , logbookentries
-  , flightStart
-  , flightIntermediate
-  , flightEnd
-  , flightpath
-  , FlightPoint
-  , Logbook
-  , Entry(AircraftFlightEntry)
-  )
+import Data.Aviation.Casr.Logbook.Types.AircraftFlight
+    ( flightpath )
+import Data.Aviation.Casr.Logbook.Types.Entry
+    ( Entry(AircraftFlightEntry) )
+import Data.Aviation.Casr.Logbook.Types.FlightPath
+    ( flightStart, flightIntermediate, flightEnd )
+import Data.Aviation.Casr.Logbook.Types.FlightPoint
+    ( landingTime, point, FlightPoint )
+import Data.Aviation.Casr.Logbook.Types.Logbook
+    ( logbookentries, Logbook )
+import Data.Aviation.Casr.Logbook.Types.Time ( daytime )
 import Data.Aviation.Casr.Logbook.Html.Html(
     htmlTimeAmount
   , htmlAviatorShort
   )
-import Data.Aviation.Casr.Logbook.Reports
+import Data.Aviation.Casr.Logbook.Reports.FlightTimeReport
+    ( FlightTimeReport,
+      HasFlightTimeReport(hoursInstrument, hoursWithPiC,
+                          hoursGA3Instructing, hoursGA2Instructing, hoursGA1Instructing,
+                          hoursGAInstructing, hoursRASeniorInstructing,
+                          hoursRAJuniorInstructing, hoursRAInstructing, hoursNightInCommand,
+                          hoursNightDual, hoursNightICUS, hoursNight, hoursDayInCommand,
+                          hoursDayDual, hoursDayICUS, hoursDay, hoursMultiEngineInCommand,
+                          hoursMultiEngineDual, hoursMultiEngineICUS, hoursMultiEngine,
+                          hoursSingleEngineInCommand, hoursSingleEngineDual,
+                          hoursSingleEngineICUS, hoursSingleEngine,
+                          hoursInAircraftRegistration, hoursInAircraftType, hoursInstructing,
+                          hoursTotalInCommand, hoursTotalDual, hoursTotalICUS, hoursTotal,
+                          flightsTotal) )
+import Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport
+    ( HasSimulatorTimeReport(hoursTotalSimulator,
+                             hoursInstrumentSimulator),
+      SimulatorTimeReport )
+import Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90
+    ( HasTakeOffLanding90(currency90, landing3, landing2, landing1,
+                          takeoff3, takeoff2, takeoff1),
+      TakeOffLanding90(TakeOffLanding90) )
 import Data.Foldable(foldr)
 import Data.Function(flip, ($))
 import qualified Data.Map as Map(foldrWithKey)
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Aviator.hs b/src/Data/Aviation/Casr/Logbook/Types/Aviator.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Aviator.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Aviator.hs
@@ -8,9 +8,11 @@
 , aviatorwithname
 , nodobaviator
 , dobaviator
+, dob'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category ( Category((.)) )
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Aviation.Casr.Logbook.Types.Rating(Rating)
 import Data.Eq(Eq)
 import Data.Ord(Ord)
@@ -30,6 +32,12 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''Aviator
+
+dob' ::
+  HasAviator c =>
+  Traversal' c Day
+dob' =
+  dob . _Just
 
 aviatorwithname ::
   String
diff --git a/src/Data/Aviation/Casr/Logbook/Types/FlightPoint.hs b/src/Data/Aviation/Casr/Logbook/Types/FlightPoint.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/FlightPoint.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/FlightPoint.hs
@@ -7,9 +7,11 @@
 , HasFlightPoint(..)
 , pointatdate
 , runwayatdate
+, runway'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category ( Category((.)) )
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Aviation.Casr.Logbook.Types.Time(Time, dayonly)
 import Data.Eq(Eq)
 import Data.Maybe(Maybe(Nothing, Just))
@@ -26,6 +28,12 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''FlightPoint
+
+runway' ::
+  HasFlightPoint c =>
+  Traversal' c String
+runway' =
+  runway . _Just
 
 pointatdate ::
   String
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Instruction.hs b/src/Data/Aviation/Casr/Logbook/Types/Instruction.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Instruction.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Instruction.hs
@@ -4,7 +4,8 @@
 
 module Data.Aviation.Casr.Logbook.Types.Instruction where
 
-import Control.Lens ( makeClassyPrisms, isn't, makeClassy )
+import Control.Category ( Category((.)) )
+import Control.Lens ( makeClassyPrisms, Traversal', _Just, isn't, makeClassy )
 import Data.Aviation.Casr.Logbook.Types.Aviator ( Aviator )
 import Data.Bool ( Bool, (&&) )
 import Data.Eq(Eq)
@@ -21,6 +22,12 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''InstructionLesson
+
+lesson' ::
+  HasInstructionLesson c =>
+  Traversal' c String
+lesson' =
+  lesson . _Just
 
 data InstructionRating =
   GA3InstructionRating
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Logbook.hs b/src/Data/Aviation/Casr/Logbook/Types/Logbook.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Logbook.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Logbook.hs
@@ -23,7 +23,7 @@
 data Logbook ae se ee be =
   Logbook {
     _logbookaviator :: Aviator
-  , _logbookentries :: (Entries ae se ee be)
+  , _logbookentries :: Entries ae se ee be
   } deriving (Eq, Ord, Show)
 
 makeClassy ''Logbook
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Rating.hs b/src/Data/Aviation/Casr/Logbook/Types/Rating.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Rating.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Rating.hs
@@ -7,9 +7,11 @@
 , HasRating(..)
 , nodayrating
 , dayrating
+, ratingAchieved'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Eq(Eq)
 import Data.Maybe(Maybe(Nothing, Just))
 import Data.Ord(Ord)
@@ -24,6 +26,12 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''Rating
+
+ratingAchieved' ::
+  HasRating c =>
+  Traversal' c Day
+ratingAchieved' =
+  ratingAchieved . _Just
 
 nodayrating ::
   String
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Time.hs b/src/Data/Aviation/Casr/Logbook/Types/Time.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Time.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Time.hs
@@ -7,9 +7,11 @@
 , HasTime(..)
 , dayonly
 , dayandtime
+, timeofday'
 ) where
 
-import Control.Lens(makeClassy)
+import Control.Category ( Category((.)) )
+import Control.Lens(makeClassy, Traversal', _Just)
 import Data.Eq(Eq)
 import Data.Ord(Ord)
 import Data.Maybe(Maybe(Nothing, Just))
@@ -23,6 +25,12 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''Time
+
+timeofday' ::
+  HasTime c =>
+  Traversal' c TimeOfDay
+timeofday' =
+  timeofday . _Just
 
 dayonly ::
   Day
