diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,5 @@
-Copyright (c)2012, Ivan Perez
+Copyright (c) 2013-2020, Keera Studios Ltd
+Copyright (c) 2010-2012, Ivan Perez
 
 All rights reserved.
 
@@ -13,9 +14,9 @@
       disclaimer in the documentation and/or other materials provided
       with the distribution.
 
-    * Neither the name of Ivan Perez nor the names of other
-      contributors may be used to endorse or promote products derived
-      from this software without specific prior written permission.
+    * Neither the name of Ivan Perez, nor the name of Keera Studios, nor the
+      names of other contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
diff --git a/keera-hails-reactivevalues.cabal b/keera-hails-reactivevalues.cabal
--- a/keera-hails-reactivevalues.cabal
+++ b/keera-hails-reactivevalues.cabal
@@ -1,139 +1,164 @@
--- hails.cabal auto-generated by cabal init. For additional options,
--- see
--- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
--- The name of the package.
-Name:                keera-hails-reactivevalues
-
--- The package version. See the Haskell package versioning policy
--- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
--- standards guiding when and how versions should be incremented.
-Version:             0.2.2.2
-
--- A short (one-line) description of the package.
-Synopsis:            Haskell on Rails - Reactive Values
+-- Copyright   : (C) Keera Studios Ltd, 2013
+-- License     : All Rights Reserved
+-- Maintainer  : support@keera.co.uk
+--
+cabal-version: >= 1.10
+build-type:    Simple
 
--- A longer description of the package.
-Description:
-  This package contains a general definition of Reactive Values and several useful combinators. A reactive value is a /typed mutable value with access properties and change propagation/. Access property can be read-only, read-write or read-write.
+name:          keera-hails-reactivevalues
+version:       0.5.0
+author:        Ivan Perez
+maintainer:    support@keera.co.uk
+homepage:      http://www.keera.co.uk/blog/community/
+license:       BSD3
+license-file:  LICENSE
+category:      Development
+synopsis:      Haskell on Rails - Reactive Values
+description:
+  This package contains a general definition of Reactive Values and several
+  useful combinators. A reactive value is a /typed mutable value with access
+  properties and change propagation/. Access property can be read-only,
+  read-write or read-write.
   .
-  How an RV is actually implemented, and when and how change propagation is executed is dependent on each RV. For instance, Gtk widget properties would normally use the standard event-handler installers to implement change propagation, whereas pure Haskell values might fork a thread (or not) and propagate changes asynchronously.
+  How an RV is actually implemented, and when and how change propagation is
+  executed is dependent on each RV. For instance, Gtk widget properties would
+  normally use the standard event-handler installers to implement change
+  propagation, whereas pure Haskell values might fork a thread (or not) and
+  propagate changes asynchronously.
   .
-  RVs can be created from pure models (see <https://github.com/keera-studios/keera-hails/tree/master/keera-hails-mvc-model-lightmodel keera-hails-mvc-model-lightmodel> and  <https://github.com/keera-studios/keera-hails/tree/master/keera-hails-mvc-model-protectedmodel keera-hails-mvc-model-protectedmodel>), Gtk+\/WX\/Qt\/HTML DOM\/Android widget properties\/event handlers\/getters\/setters, files, sockets, FRP networks. Other backends are also available. See <https://github.com/keera-studios/keera-hails keera-hails> for a list of available backends, tutorials, etc.
+  RVs can be created from pure models (see
+  <https://github.com/keera-studios/keera-hails/tree/master/keera-hails-mvc-model-lightmodel
+  keera-hails-mvc-model-lightmodel> and
+  <https://github.com/keera-studios/keera-hails/tree/master/keera-hails-mvc-model-protectedmodel
+  keera-hails-mvc-model-protectedmodel>), Gtk+\/WX\/Qt\/HTML DOM\/Android widget
+  properties\/event handlers\/getters\/setters, files, sockets, FRP networks.
+  Other backends are also available. See
+  <https://github.com/keera-studios/keera-hails keera-hails> for a list of
+  available backends, tutorials, etc.
 
--- URL for the project homepage or repository.
-Homepage:            http://www.keera.es/blog/community/
+tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2
 
--- The license under which the package is released.
-License:             BSD3
+source-repository head
+ type: git
+ location: git://github.com/keera-studios/keera-hails
+ subdir: keera-hails-reactivevalues
 
--- The file containing the license text.
-License-file:        LICENSE
+-- You can disable the hlint test suite with -f-test-hlint
+flag test-hlint
+  default:     True
+  manual:      True
 
--- The package author(s).
-Author:              Ivan Perez
+-- You can disable the haddock coverage test suite with -f-test-doc-coverage
+flag test-doc-coverage
+  default:     True
+  manual:      True
 
--- An email address to which users can send suggestions, bug reports,
--- and patches.
-Maintainer:          ivan.perez@keera.es
+flag test-unit-tests
+  default:     True
+  manual:      True
 
--- A copyright notice.
--- Copyright:
 
-Tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2
+library
 
-Category:            Development
+  exposed-modules:
+    Control.GFunctor
+    Data.ReactiveValue
 
-Build-type:          Simple
+  build-depends:
+      base >= 4 && < 5
+    , contravariant
 
--- Extra files to be distributed with the package, such as examples or
--- a README.
--- Extra-source-files:
+  default-language:
+    Haskell2010
 
--- Constraint on the version of Cabal needed to build this package.
-Cabal-version:       >=1.8
+  hs-source-dirs:
+    src/
 
--- You can disable the hlint test suite with -f-test-hlint
-flag test-hlint
-  default: True
-  manual: True
+  ghc-options:
+    -Wall -fno-warn-unused-do-bind -O2
 
--- You can disable the haddock coverage test suite with -f-test-doc-coverage
-flag test-doc-coverage
-  default: True
-  manual: True
 
--- You can disable the haddock coverage test suite with -f-test-unit-tests
-flag test-unit-tests
-  default: True
-  manual: True
-
-Library
-  hs-source-dirs: src/
+test-suite hlint
 
-  ghc-options: -Wall -fno-warn-unused-do-bind -O2
+  type:
+    exitcode-stdio-1.0
 
-  -- Modules exported by the library.
-  Exposed-modules: Data.ReactiveValue
-                   Control.GFunctor
+  main-is:
+    HLintMain.hs
 
-  -- Packages needed in order to build this package.
-  Build-depends: base >= 4 && < 5, contravariant
+  default-language:
+    Haskell2010
 
--- Verify that the code follows reasonable coding standards
-test-suite hlint
-  type: exitcode-stdio-1.0
-  main-is: hlint.hs
-  ghc-options: -w -threaded -rtsopts -with-rtsopts=-N
-  hs-source-dirs: tests
+  hs-source-dirs:
+    tests
 
   if !flag(test-hlint)
-    buildable: False
+    buildable:
+      False
   else
     build-depends:
-      base >= 4 && < 5,
-      hlint >= 1.7
+        base
+      , hlint                >= 1.7
 
--- Verify that the code is thoroughly documented
+
 test-suite haddock-coverage
-  type: exitcode-stdio-1.0
-  main-is: HaddockCoverage.hs
-  ghc-options: -Wall
-  hs-source-dirs: tests
 
+  type:
+    exitcode-stdio-1.0
+
+  main-is:
+    HaddockCoverage.hs
+
+  default-language:
+    Haskell2010
+
+  hs-source-dirs:
+    tests
+
+  ghc-options:
+    -Wall
+
   if !flag(test-doc-coverage)
-    buildable: False
+    buildable:
+      False
   else
     build-depends:
-      base >= 4 && < 5,
-      directory,
-      filepath,
-      process,
-      regex-posix
+        base                 >= 4        && < 5
+      , directory
+      , filepath
+      , process
+      , regex-posix
 
--- Verify that the code is thoroughly documented
+    build-tool-depends: cabal-install:cabal
+
+
 test-suite unit-tests
-  type: exitcode-stdio-1.0
-  main-is: Tasty.hs
-  ghc-options: -Wall
-  hs-source-dirs: tests
 
+  type:
+    exitcode-stdio-1.0
+
+  main-is:
+    Tasty.hs
+
+  default-language:
+    Haskell2010
+
+  hs-source-dirs:
+    tests
+
+  ghc-options:
+    -Wall
+
   if !flag(test-unit-tests)
-    buildable: False
+    buildable:
+      False
   else
     build-depends:
-      base >= 4 && < 5,
-      -- This library and testing deps
-      mtl,
-      keera-hails-reactivevalues,
-
-      -- Testing libraries
-      tasty,
-      tasty-quickcheck,
-      tasty-hunit,
-      QuickCheck,
-      HUnit
-
-source-repository head
-    type: git
-    location: git://github.com/keera-studios/keera-hails
-    subdir: keera-hails-reactivevalues
+        base >= 4 && < 5
+      , HUnit
+      , QuickCheck
+      , keera-hails-reactivevalues
+      , mtl
+      , tasty
+      , tasty-hunit
+      , tasty-quickcheck
diff --git a/src/Control/GFunctor.hs b/src/Control/GFunctor.hs
--- a/src/Control/GFunctor.hs
+++ b/src/Control/GFunctor.hs
@@ -1,6 +1,10 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FlexibleInstances     #-}
 -- | Functors parameterised over the morphisms in the source category.
+--
+-- Copyright   : (C) Keera Studios Ltd, 2013
+-- License     : BSD3
+-- Maintainer  : support@keera.co.uk
 module Control.GFunctor where
 
 infixl 8 <$$>
diff --git a/src/Data/ReactiveValue.hs b/src/Data/ReactiveValue.hs
--- a/src/Data/ReactiveValue.hs
+++ b/src/Data/ReactiveValue.hs
@@ -1,5 +1,6 @@
-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FunctionalDependencies #-}
-{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleContexts       #-}
+{-# LANGUAGE FlexibleInstances      #-}
+{-# LANGUAGE FunctionalDependencies #-}
 -- | Reactive Values (RVs) are typed mutable variables with a change
 -- notification mechanism.
 --
@@ -19,6 +20,12 @@
 -- to existing backends (GUIs, devices, files, network, FRP), see
 -- https://github.com/keera-studios/keera-hails
 --
+-- A more detailed description of reactive values can be found at:
+-- http://dl.acm.org/citation.cfm?id=2804316
+--
+-- Copyright   : (C) Keera Studios Ltd, 2013
+-- License     : BSD3
+-- Maintainer  : support@keera.co.uk
 module Data.ReactiveValue
   ( -- * Reactive Values
 
diff --git a/tests/HLintMain.hs b/tests/HLintMain.hs
new file mode 100644
--- /dev/null
+++ b/tests/HLintMain.hs
@@ -0,0 +1,23 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Main (hlint)
+-- Copyright   :  (C) 2015 Ivan Perez, 2013-2014 Edward Kmett
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Ivan Perez <ivan.perez@keera.co.uk>
+-- Stability   :  provisional
+-- Portability :  portable
+--
+-- This module runs HLint on the source tree.
+-----------------------------------------------------------------------------
+module Main where
+
+import Control.Monad
+import Language.Haskell.HLint
+import System.Environment
+import System.Exit
+
+main :: IO ()
+main = do
+  args  <- getArgs
+  hints <- hlint $ ["src"] ++ args
+  unless (null hints) exitFailure
diff --git a/tests/hlint.hs b/tests/hlint.hs
deleted file mode 100644
--- a/tests/hlint.hs
+++ /dev/null
@@ -1,23 +0,0 @@
------------------------------------------------------------------------------
--- |
--- Module      :  Main (hlint)
--- Copyright   :  (C) 2015 Ivan Perez, 2013-2014 Edward Kmett
--- License     :  BSD-style (see the file LICENSE)
--- Maintainer  :  Ivan Perez <ivan.perez@keera.co.uk>
--- Stability   :  provisional
--- Portability :  portable
---
--- This module runs HLint on the source tree.
------------------------------------------------------------------------------
-module Main where
-
-import Control.Monad
-import Language.Haskell.HLint
-import System.Environment
-import System.Exit
-
-main :: IO ()
-main = do
-  args  <- getArgs
-  hints <- hlint $ ["src"] ++ args
-  unless (null hints) exitFailure
