diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,9 +1,13 @@
 # Revision history for rhine-gloss
 
-## 0.2.0.0  -- 2017-11-29
+## 0.4.0.0 -- 2017.12.04
 
-* First version. Version numbers follow rhine.
+* Version bump
 
 ## 0.3.0.0  -- 2017-11-30
 
 * Added simple example.
+
+## 0.2.0.0  -- 2017-11-29
+
+* First version. Version numbers follow rhine.
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -16,5 +16,5 @@
 mainSyncSF = timeInfoOf sinceStart >>> arr (* 50) >>> arr gears
 
 main :: IO ()
-main = flowGloss (InWindow "sonnen" (400, 400) (10, 10)) (greyN 0.3) 30
+main = flowGloss (InWindow "rhine-gloss-gears" (400, 400) (10, 10)) (greyN 0.3) 30
      $ buildGlossRhine Just mainSyncSF
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,26 @@
+# README
+
+This package provides a simple wrapper for the `gloss` library,
+or rather the function `Graphics.Gloss.play`,
+enabling you to write `gloss` applications as synchronous signal functions.
+An example "gears" program, which you can run as `cabal run gloss-gears`,
+now becomes as simple as:
+
+```haskell
+import FRP.Rhine.Gloss
+
+
+-- | Calculate a gear wheel rotated by a certain angle.
+gears :: Float -> Picture
+gears angle = color green $ pictures
+  $ circleSolid 60
+  : map (rotate angle) [ rotate (45 * n) $ rectangleSolid 20 150 | n <- [0..3] ]
+
+-- | Rotate the gear with a constant angular velocity.
+mainSyncSF :: GlossSyncSF a
+mainSyncSF = timeInfoOf sinceStart >>> arr (* 50) >>> arr gears
+
+main :: IO ()
+main = flowGloss (InWindow "rhine-gloss-gears" (400, 400) (10, 10)) (greyN 0.3) 30
+     $ buildGlossRhine Just mainSyncSF
+```
diff --git a/rhine-gloss.cabal b/rhine-gloss.cabal
--- a/rhine-gloss.cabal
+++ b/rhine-gloss.cabal
@@ -2,10 +2,13 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                rhine-gloss
-version:             0.3.0.0
--- synopsis:
-description:         Wrapper to run reactive programs written in Rhine
+version:             0.4.0.0
+synopsis:            Wrapper to run reactive programs written in Rhine
                      with Gloss as backend
+description:
+  This package provides a simple wrapper for the `gloss` library,
+  or rather the function `Graphics.Gloss.play`,
+  enabling you to write `gloss` applications as synchronous signal functions.
 license:             BSD3
 license-file:        LICENSE
 author:              Manuel Bärenz
@@ -14,14 +17,15 @@
 category:            FRP
 build-type:          Simple
 extra-source-files:  ChangeLog.md
+extra-doc-files:     README.md
 cabal-version:       >=1.18
 
 library
   exposed-modules:     FRP.Rhine.Gloss
   other-modules:       FRP.Rhine.Gloss.Internals
   build-depends:       base  >= 4.7    && < 5
-                     , rhine == 0.3.*
-                     , dunai == 0.3.*
+                     , rhine == 0.4.*
+                     , dunai == 0.4.*
                      , gloss == 1.11.*
   hs-source-dirs:      src
   default-language:    Haskell2010
