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.12
+version:            0.6.13
 license:            OtherLicense
 license-file:       LICENSE
 author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>
@@ -37,6 +37,7 @@
                     , lucid >= 2.9 && < 3
                     , lens >= 4.1 && < 5
                     , text >= 1.2 && < 1.3
+                    , attoparsec == 0.13.2.2
   ghc-options:
                     -Wall
 
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+0.6.13
+
+* Update dependencies
+* Update source files with a few extra functions
+
 0.6.9
 
 * Fix bug in command hours
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs b/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightExpense.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs b/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/AircraftFlightMeta.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs b/src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/AircraftLandingExpense.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs b/src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/AircraftUsageExpense.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs b/src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/BriefingExpense.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.BriefingExpense(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs b/src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/BriefingMeta.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -10,8 +11,11 @@
 
 import Control.Lens(makeClassy, makeWrapped)
 import Data.Aviation.Casr.Logbook.Meta.BriefingExpense
+    ( BriefingExpense )
 import Data.Eq(Eq)
+import Data.Monoid ( (<>), Monoid(mempty) )
 import Data.Ord(Ord)
+import Data.Semigroup ( Semigroup )
 import Prelude(Show)
 
 newtype BriefingMeta =
@@ -21,3 +25,11 @@
 
 makeClassy ''BriefingMeta
 makeWrapped ''BriefingMeta
+
+instance Semigroup BriefingMeta where
+  BriefingMeta x <> BriefingMeta y =
+    BriefingMeta (x <> y)
+
+instance Monoid BriefingMeta where
+  mempty =
+    BriefingMeta mempty
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs b/src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/ExamExpense.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.ExamExpense(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs b/src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/ExamMeta.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -9,9 +10,11 @@
 ) where
 
 import Control.Lens(makeClassy, makeWrapped)
-import Data.Aviation.Casr.Logbook.Meta.ExamExpense
+import Data.Aviation.Casr.Logbook.Meta.ExamExpense ( ExamExpense )
 import Data.Eq(Eq)
+import Data.Monoid ( (<>), Monoid(mempty) )
 import Data.Ord(Ord)
+import Data.Semigroup ( Semigroup )
 import Prelude(Show)
 
 newtype ExamMeta =
@@ -21,3 +24,11 @@
 
 makeClassy ''ExamMeta
 makeWrapped ''ExamMeta
+
+instance Semigroup ExamMeta where
+  ExamMeta x <> ExamMeta y =
+    ExamMeta (x <> y)
+
+instance Monoid ExamMeta where
+  mempty =
+    ExamMeta mempty
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/Html.hs b/src/Data/Aviation/Casr/Logbook/Meta/Html.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/Html.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/Html.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Data.Aviation.Casr.Logbook.Meta.Html(
@@ -30,10 +31,11 @@
   , showCentsAsDollars
   , showThousandCentsAsDollars
   , showHundredCentsAsDollars
-  , whenEmpty  
+  , whenEmpty
 ) where
 
 import Control.Category((.), id)
+import Control.Lens(view)
 import Control.Monad(when)
 import Data.Aviation.Casr.Logbook.Types(
     AircraftFlight
@@ -52,7 +54,8 @@
   , BriefingMeta(BriefingMeta)
   , ExamExpense(ExamExpense)
   , ExamMeta(ExamMeta)
-  , Image(Image)
+  , Image(..)
+  , HasImage(..)
   , ImageType(Jpg, Png, Gif)
   , Passenger(Passenger)
   , SimulatorFlightExpense(SimulatorFlightExpense)
@@ -66,10 +69,11 @@
   , aircraftUsageCost
   , simulatorFlightCost
   , briefingCost
-  ) 
+  )
 import Data.Bool(not)
 import Data.Foldable(mapM_, null)
 import Data.Function(($))
+import Data.Functor ( (<$>) )
 import Data.Int(Int)
 import Data.List(reverse)
 import Data.Maybe(Maybe, maybe, fromMaybe)
@@ -179,7 +183,7 @@
   -> Html ()
 htmlVisualisation _ (Doarama i _ n) =
   let n' = fromMaybe "doarama.com" n
-  in  do  a_ [href_ ("http://doarama.com/view/" <> Text.pack i)] $ 
+  in  do  a_ [href_ ("http://doarama.com/view/" <> Text.pack i)] $
             span_ [class_ "Visualisation_name"] (fromString n')
           -- p_ (iframe_ [src_ ("http://www.doarama.com/embed?k=" <> Text.pack e), width_ "560", height_ "315", termWith -- "allowfullscreen" [] "allowfullscreen"] "")
 
@@ -204,12 +208,13 @@
   AircraftFlight
   -> Image
   -> Html ()
-htmlImage fl (Image u t s n) =
-  let u' = fromString u      
-      n' = fromMaybe ("Image (" <> strImageType t <> ")") n
+htmlImage fl i =
+  let u' = fromString (view imageuri i)
+      s' = fromMaybe u' (fromString <$> view imageurismall i)
+      n' = fromMaybe ("Image (" <> strImageType (view imagetype i) <> ")") (view imagename i)
   in  do  a_ [href_ u'] $
-            img_ [src_ u', width_ "120", alt_ (Text.pack n')]
-          htmlImageSource fl s
+            img_ [src_ s', width_ "120", alt_ (Text.pack n')]
+          htmlImageSource fl (view imagesource i)
 
 strTrackLogType ::
   TrackLogType
@@ -240,7 +245,7 @@
       o = do  fromString n'
               htmlTrackLogSource fl s
   in  do  a_ [href_ u'] o
-          case t of 
+          case t of
             ImageTrackLog _ ->
               do  br_ []
                   a_ [href_ u'] $
@@ -301,7 +306,7 @@
 htmlImages fl x =
   whenEmpty (\q -> div_ [class_ "tracklogs"] $
     do  span_ [class_ "imagesheader"] "Images"
-        div_ [style_ "text-align: justify"] $ 
+        div_ [style_ "text-align: justify"] $
           mapM_ (htmlImage fl) q) x
 
 htmlVideos ::
@@ -346,7 +351,7 @@
   -> AircraftFlightMeta
   -> Html ()
 htmlAircraftFlightMeta fl (AircraftFlightMeta tls vls ims vds exs pax) =
-  div_ $ 
+  div_ $
     do  htmlTrackLogs fl tls
         htmlVisualisations fl vls
         htmlImages fl ims
@@ -362,7 +367,7 @@
   whenEmpty (\q -> div_ [class_ "simulatormeta"] $
     do  span_ [class_ "simulatorheader"] "Expenses"
         ul_ [] $
-          mapM_ (li_ [class_ "expense"] . htmlSimulatorFlightExpense fl) q) s  
+          mapM_ (li_ [class_ "expense"] . htmlSimulatorFlightExpense fl) q) s
 
 htmlExamMeta ::
   Exam
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
@@ -1,14 +1,16 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.Image(
   Image(Image)
 , HasImage(..)
+, imageUriType
 ) where
 
 import Control.Lens(makeClassy)
-import Data.Aviation.Casr.Logbook.Meta.ImageType
+import Data.Aviation.Casr.Logbook.Meta.ImageType ( ImageType )
 import Data.Eq(Eq)
-import Data.Maybe(Maybe)
+import Data.Maybe(Maybe(..))
 import Data.Ord(Ord)
 import Data.String(String)
 import Prelude(Show)
@@ -16,9 +18,17 @@
 data Image =
   Image {
     _imageuri :: String
+  , _imageurismall :: Maybe String
   , _imagetype :: ImageType
   , _imagesource :: Maybe String
   , _imagename :: Maybe String
   } deriving (Eq, Ord, Show)
-  
+
 makeClassy ''Image
+
+imageUriType ::
+  String
+  -> ImageType
+  -> Image
+imageUriType s t =
+  Image s Nothing t Nothing Nothing
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs b/src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/ImageType.hs
@@ -1,11 +1,15 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.ImageType(
   ImageType(Jpg, Png, Gif)
 , AsImageType(..)
+, jpg
+, png
+, gif
 ) where
 
-import Control.Lens(makeClassyPrisms)
+import Control.Lens(makeClassyPrisms, ( # ))
 import Data.Eq(Eq)
 import Data.Ord(Ord)
 import Prelude(Show)
@@ -17,3 +21,21 @@
   deriving (Eq, Ord, Show)
 
 makeClassyPrisms ''ImageType
+
+jpg ::
+  AsImageType t =>
+  t
+jpg =
+  _Jpg # ()
+
+png ::
+  AsImageType t =>
+  t
+png =
+  _Png # ()
+
+gif ::
+  AsImageType t =>
+  t
+gif =
+  _Gif # ()
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/Passenger.hs b/src/Data/Aviation/Casr/Logbook/Meta/Passenger.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/Passenger.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/Passenger.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs b/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightExpense.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense(
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs b/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/SimulatorFlightMeta.hs
@@ -1,7 +1,9 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE InstanceSigs #-}
 
 module Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta(
   SimulatorFlightMeta(SimulatorFlightMeta)
@@ -10,8 +12,11 @@
 
 import Control.Lens(makeClassy, makeWrapped)
 import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense
+    ( SimulatorFlightExpense )
 import Data.Eq(Eq)
+import Data.Monoid ( (<>), Monoid(mempty) )
 import Data.Ord(Ord)
+import Data.Semigroup ( Semigroup )
 import Prelude(Show)
 
 newtype SimulatorFlightMeta =
@@ -21,3 +26,12 @@
 
 makeClassy ''SimulatorFlightMeta
 makeWrapped ''SimulatorFlightMeta
+
+instance Semigroup SimulatorFlightMeta where
+  SimulatorFlightMeta x <> SimulatorFlightMeta y =
+    SimulatorFlightMeta (x <> y)
+
+instance Monoid SimulatorFlightMeta where
+  mempty :: SimulatorFlightMeta
+  mempty =
+    SimulatorFlightMeta mempty
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
@@ -1,14 +1,17 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.TrackLog(
   TrackLog(TrackLog)
 , HasTrackLog(..)
+, tracklogUriType
 ) where
 
 import Control.Lens(makeClassy)
 import Data.Aviation.Casr.Logbook.Meta.TrackLogType
+    ( TrackLogType )
 import Data.Eq(Eq)
-import Data.Maybe(Maybe)
+import Data.Maybe(Maybe(..))
 import Data.Ord(Ord)
 import Data.String(String)
 import Prelude(Show)
@@ -20,5 +23,12 @@
   , _tracklogsource :: Maybe String
   , _tracklogname :: Maybe String
   } deriving (Eq, Ord, Show)
-  
+
 makeClassy ''TrackLog
+
+tracklogUriType ::
+  String
+  -> TrackLogType
+  -> TrackLog
+tracklogUriType s t =
+  TrackLog s t Nothing Nothing
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs b/src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/TrackLogType.hs
@@ -1,12 +1,16 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.TrackLogType(
   TrackLogType(Gpx, Kml, Kmz, ImageTrackLog)
 , AsTrackLogType(..)
+, gpx
+, kml
+, kmz
 ) where
 
-import Control.Lens(makeClassyPrisms)
-import Data.Aviation.Casr.Logbook.Meta.ImageType
+import Control.Lens(makeClassyPrisms, ( # ))
+import Data.Aviation.Casr.Logbook.Meta.ImageType ( ImageType )
 import Data.Eq(Eq)
 import Data.Ord(Ord)
 import Prelude(Show)
@@ -19,3 +23,21 @@
   deriving (Eq, Ord, Show)
 
 makeClassyPrisms ''TrackLogType
+
+gpx ::
+  AsTrackLogType t =>
+  t
+gpx =
+  _Gpx # ()
+
+kml ::
+  AsTrackLogType t =>
+  t
+kml =
+  _Kml # ()
+
+kmz ::
+  AsTrackLogType t =>
+  t
+kmz =
+  _Kmz # ()
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -11,7 +12,9 @@
 import Control.Lens(makeClassy, makeWrapped)
 import Data.Aviation.Casr.Logbook.Meta.TrackLog
 import Data.Eq(Eq)
+import Data.Monoid ( (<>), Monoid(mempty) )
 import Data.Ord(Ord)
+import Data.Semigroup ( Semigroup )
 import Prelude(Show)
 
 newtype TrackLogs =
@@ -21,3 +24,11 @@
 
 makeClassy ''TrackLogs
 makeWrapped ''TrackLogs
+
+instance Semigroup TrackLogs where
+  TrackLogs x <> TrackLogs y =
+    TrackLogs (x <> y)
+
+instance Monoid TrackLogs where
+  mempty =
+    TrackLogs mempty
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
@@ -1,14 +1,16 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.Video(
   Video(Video)
 , HasVideo(..)
+, videoUriType
 ) where
 
 import Control.Lens(makeClassy)
-import Data.Aviation.Casr.Logbook.Meta.VideoType
+import Data.Aviation.Casr.Logbook.Meta.VideoType ( VideoType )
 import Data.Eq(Eq)
-import Data.Maybe(Maybe)
+import Data.Maybe(Maybe(..))
 import Data.Ord(Ord)
 import Data.String(String)
 import Prelude(Show)
@@ -22,3 +24,10 @@
   } deriving (Eq, Ord, Show)
 
 makeClassy ''Video
+
+videoUriType ::
+  String
+  -> VideoType
+  -> Video
+videoUriType s t =
+  Video s t Nothing Nothing
diff --git a/src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs b/src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs
--- a/src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs
+++ b/src/Data/Aviation/Casr/Logbook/Meta/VideoType.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.VideoType(
@@ -5,9 +6,12 @@
 , AsVideoType(..)
 , linkVideoType
 , iframeVideoType
+, youtube
+, vimeo
+, bambuser
 ) where
 
-import Control.Lens(makeClassyPrisms)
+import Control.Lens(makeClassyPrisms, ( # ))
 import Data.Eq(Eq)
 import Data.List((++))
 import Data.Ord(Ord)
@@ -19,9 +23,27 @@
   | Vimeo
   | Bambuser
   deriving (Eq, Ord, Show)
-  
+
 makeClassyPrisms ''VideoType
 
+youtube ::
+  AsVideoType t =>
+  t
+youtube =
+  _YouTube # ()
+
+vimeo ::
+  AsVideoType t =>
+  t
+vimeo =
+  _Vimeo # ()
+
+bambuser ::
+  AsVideoType t =>
+  t
+bambuser =
+  _Bambuser # ()
+
 linkVideoType ::
   VideoType
   -> String
@@ -29,7 +51,7 @@
 linkVideoType YouTube u =
   "https://www.youtube.com/watch?v=" ++ u
 linkVideoType Vimeo u =
-  "https://bambuser.com/v/" ++ u 
+  "https://bambuser.com/v/" ++ u
 linkVideoType Bambuser u =
   "https://vimeo.com/" ++ u
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Meta.Visualisation(
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/FlightTimeReport.hs b/src/Data/Aviation/Casr/Logbook/Reports/FlightTimeReport.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/FlightTimeReport.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/FlightTimeReport.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Reports.FlightTimeReport(
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Data.Aviation.Casr.Logbook.Reports.Html(
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/Meta.hs b/src/Data/Aviation/Casr/Logbook/Reports/Meta.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/Meta.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/Meta.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TemplateHaskell #-}
+{-# OPTIONS_GHC -Wall #-}
 
 module Data.Aviation.Casr.Logbook.Reports.Meta(
   module M
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/Meta/ExpenseReport.hs b/src/Data/Aviation/Casr/Logbook/Reports/Meta/ExpenseReport.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/Meta/ExpenseReport.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/Meta/ExpenseReport.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Reports.Meta.ExpenseReport(
@@ -10,20 +11,31 @@
 import Control.Category((.))
 import Control.Lens(makeClassy, (^.), _Wrapped)
 import Control.Monad((>>=), return)
-import Data.Aviation.Casr.Logbook.Types(Entry(AircraftFlightEntry, SimulatorFlightEntry, ExamEntry, BriefingEntry), Logbook, logbookentries)
-import Data.Aviation.Casr.Logbook.Meta(
-    AircraftFlightMeta
-  , SimulatorFlightMeta
-  , BriefingMeta
-  , ExamMeta
-  , AircraftFlightExpense(ExpenseAircraftUsage, ExpenseAircraftLanding)
-  , briefingCost
-  , examexpenseamount
-  , simulatorFlightCost
-  , aircraftlandingexpenseamount
-  , expenses
-  , aircraftUsageCost
-  )
+import Data.Aviation.Casr.Logbook.Types.Entry
+    ( Entry(AircraftFlightEntry, SimulatorFlightEntry, ExamEntry,
+            BriefingEntry) )
+import Data.Aviation.Casr.Logbook.Types.Logbook
+    ( Logbook, logbookentries )
+import Data.Aviation.Casr.Logbook.Meta.AircraftFlightExpense
+    ( AircraftFlightExpense(ExpenseAircraftUsage,
+                            ExpenseAircraftLanding) )
+import Data.Aviation.Casr.Logbook.Meta.AircraftFlightMeta
+    ( AircraftFlightMeta, expenses )
+import Data.Aviation.Casr.Logbook.Meta.AircraftLandingExpense
+    ( aircraftlandingexpenseamount )
+import Data.Aviation.Casr.Logbook.Meta.AircraftUsageExpense
+    ( aircraftUsageCost )
+import Data.Aviation.Casr.Logbook.Meta.BriefingExpense
+    ( briefingCost )
+import Data.Aviation.Casr.Logbook.Meta.BriefingMeta
+    ( BriefingMeta )
+import Data.Aviation.Casr.Logbook.Meta.ExamExpense
+    ( examexpenseamount )
+import Data.Aviation.Casr.Logbook.Meta.ExamMeta ( ExamMeta )
+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightExpense
+    ( simulatorFlightCost )
+import Data.Aviation.Casr.Logbook.Meta.SimulatorFlightMeta
+    ( SimulatorFlightMeta )
 import Data.Eq(Eq)
 import Data.Foldable(sum, foldMap)
 import Data.Function(($))
@@ -31,8 +43,7 @@
 import Data.Monoid(Monoid(mempty, mappend))
 import Data.Ord(Ord)
 import Data.Semigroup(Semigroup((<>)))
-import Prelude(Show)
-import Prelude((+))
+import Prelude(Show, (+))
 
 data ExpenseReport =
   ExpenseReport {
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/Meta/Html.hs b/src/Data/Aviation/Casr/Logbook/Reports/Meta/Html.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/Meta/Html.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/Meta/Html.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE OverloadedStrings #-}
 
 module Data.Aviation.Casr.Logbook.Reports.Meta.Html(
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/SimulatorTimeReport.hs b/src/Data/Aviation/Casr/Logbook/Reports/SimulatorTimeReport.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/SimulatorTimeReport.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/SimulatorTimeReport.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Reports.SimulatorTimeReport(
diff --git a/src/Data/Aviation/Casr/Logbook/Reports/TakeOffLanding90.hs b/src/Data/Aviation/Casr/Logbook/Reports/TakeOffLanding90.hs
--- a/src/Data/Aviation/Casr/Logbook/Reports/TakeOffLanding90.hs
+++ b/src/Data/Aviation/Casr/Logbook/Reports/TakeOffLanding90.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Data.Aviation.Casr.Logbook.Reports.TakeOffLanding90(
@@ -6,7 +7,7 @@
 ) where
 
 import Control.Lens(makeClassy)
-import Data.Aviation.Casr.Logbook.Types(FlightPoint)
+import Data.Aviation.Casr.Logbook.Types.FlightPoint ( FlightPoint )
 import Data.Eq(Eq)
 import Data.Ord(Ord)
 import Data.Time(Day)
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Aircraft.hs b/src/Data/Aviation/Casr/Logbook/Types/Aircraft.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Aircraft.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Aircraft.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/AircraftFlight.hs b/src/Data/Aviation/Casr/Logbook/Types/AircraftFlight.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/AircraftFlight.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/AircraftFlight.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -50,7 +51,7 @@
   -> Aviator
 nodobaviator s f r =
   Aviator
-    s 
+    s
     f
     r
     Nothing
@@ -64,7 +65,7 @@
   -> Aviator
 dobaviator s f r b =
   Aviator
-    s 
+    s
     f
     r
     (Just b)
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Briefing.hs b/src/Data/Aviation/Casr/Logbook/Types/Briefing.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Briefing.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Briefing.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -5,7 +6,7 @@
   Briefing(..)
 , HasBriefing(..)
 ) where
-  
+
 import Control.Category((.))
 import Control.Lens(makeClassy)
 import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator, HasAviator(aviator))
@@ -43,4 +44,4 @@
 instance HasTimeAmount Briefing where
   timeAmount =
     briefingTimeAmount . timeAmount
-    
+
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Command.hs b/src/Data/Aviation/Casr/Logbook/Types/Command.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Command.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Command.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE LambdaCase #-}
diff --git a/src/Data/Aviation/Casr/Logbook/Types/DayNight.hs b/src/Data/Aviation/Casr/Logbook/Types/DayNight.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/DayNight.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/DayNight.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Engine.hs b/src/Data/Aviation/Casr/Logbook/Types/Engine.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Engine.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Engine.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Entries.hs b/src/Data/Aviation/Casr/Logbook/Types/Entries.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Entries.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Entries.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE FunctionalDependencies #-}
@@ -15,7 +16,7 @@
 import Data.Eq(Eq)
 import Data.Ord(Ord)
 import Prelude(Show)
-  
+
 newtype Entries ae se ee be =
   Entries
     [Entry ae se ee be]
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Entry.hs b/src/Data/Aviation/Casr/Logbook/Types/Entry.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Entry.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Entry.hs
@@ -1,6 +1,6 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE FlexibleInstances #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Exam.hs b/src/Data/Aviation/Casr/Logbook/Types/Exam.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Exam.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Exam.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -27,7 +28,7 @@
   , _examDelegate :: Aviator
   , _examResult :: Int
   , _examResultMaximum :: Int
-  } deriving (Eq, Ord, Show)  
+  } deriving (Eq, Ord, Show)
 
 makeClassy ''Exam
 
@@ -42,7 +43,7 @@
 instance HasAviator Exam where
   aviator =
     examDelegate . aviator
-    
+
 dayonlyexam ::
   String
   -> Location
diff --git a/src/Data/Aviation/Casr/Logbook/Types/FlightPath.hs b/src/Data/Aviation/Casr/Logbook/Types/FlightPath.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/FlightPath.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/FlightPath.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/Location.hs b/src/Data/Aviation/Casr/Logbook/Types/Location.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/Location.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/Location.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE FunctionalDependencies #-}
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/SimulatorFlight.hs b/src/Data/Aviation/Casr/Logbook/Types/SimulatorFlight.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/SimulatorFlight.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/SimulatorFlight.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -26,7 +27,7 @@
   , _simulatorothercrew :: [Aviator]
   , _simulatorTime :: TimeAmount
   , _instrumentsimulatorTime :: TimeAmount
-  } deriving (Eq, Ord, Show)   
+  } deriving (Eq, Ord, Show)
 
 makeClassy ''SimulatorFlight
 
@@ -46,4 +47,3 @@
   SimulatorFlight
     n
     (dayonly d)
-    
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
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
diff --git a/src/Data/Aviation/Casr/Logbook/Types/TimeAmount.hs b/src/Data/Aviation/Casr/Logbook/Types/TimeAmount.hs
--- a/src/Data/Aviation/Casr/Logbook/Types/TimeAmount.hs
+++ b/src/Data/Aviation/Casr/Logbook/Types/TimeAmount.hs
@@ -1,3 +1,4 @@
+{-# OPTIONS_GHC -Wall #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 {-# LANGUAGE TemplateHaskell #-}
 
@@ -39,12 +40,12 @@
   TimeAmount 0 x0
 
 addtimeamount ::
-  TimeAmount 
+  TimeAmount
   -> TimeAmount
   -> TimeAmount
 TimeAmount f1 p1 `addtimeamount` TimeAmount f2 p2 =
   let (h, q) = p1 `addDecDigit'` p2
-  in  TimeAmount (f1 + f2 + integralDecimal # (h :: DecDigit)) q 
+  in  TimeAmount (f1 + f2 + integralDecimal # (h :: DecDigit)) q
 
 timeAmountBy10 ::
   TimeAmount
