diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,11 @@
 CHANGELOG
 
+  0.13.3:
+    - Improve README
+    - Relax types for `sym2` and `sym3` combinators
+    - Add new cursors
+    Thanks to Sridhar Ratnakumar, Brad Ediger and Alexandre Esteves.
+
   0.13.2:
     - Bump hspec versions
     Thanks to Julien Dehos and Sean Parsons.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,43 @@
+# Build setup
+
+Ideally, you build this project with [`nix`](https://nixos.org/nix/):
+
+```
+git clone git@github.com:sebastiaanvisser/clay.git
+cd clay
+nix-build
+```
+
+This will build `clay` for the current default version of GHC.
+To build for a particular version,
+set the `GHC_VERSION` environment variable:
+
+```
+GHC_VERSION=ghc881 nix-build
+```
+
+To find out which GHC versions your nix setup provides:
+
+```
+$ nix eval '(builtins.attrNames ((import <nixpkgs> {}).haskell.compiler))'
+[ "ghc822Binary" "ghc844" "ghc863Binary" "ghc865" "ghc881" "ghcHEAD" "ghcjs" "ghcjs86" "integer-simple" ]
+```
+
+# Building your pull request
+
+You are heartily encouraged to close an issue by contributing a pull request that fixes it :)
+To test whether your fix will build,
+ideally you should build it for all GHC versions:
+
+```
+nix-build all-ghcs.nix
+```
+
+You can see all supported versions in `.travis.yml`.
+If your fix breaks an older version, do not despair.
+As long as the last three versions work,
+you can delete older GHC versions from `.travis.yml` in your pull request,
+and deprecation of that version will be considered.
+
+If you fix an important bug or contribute a new feature,
+consider adding a line to `CHANGELOG` describing what you have changed.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
+# Clay
+
+[![Build Status](https://travis-ci.org/sebastiaanvisser/clay.png)](https://travis-ci.org/sebastiaanvisser/clay)
+[![Hackage](https://img.shields.io/hackage/v/clay.svg)](https://hackage.haskell.org/package/clay)
+
 Clay is a CSS preprocessor like LESS and Sass, but implemented as an embedded
 domain specific language (EDSL) in Haskell. This means that all CSS selectors
 and style rules are first class Haskell functions, which makes reuse and
@@ -6,5 +11,3 @@
 The project is described on [the project homepage](http://fvisser.nl/clay).
 
 The API documentation can be found in the top level module `Clay`.
-
-[![Build Status](https://travis-ci.org/sebastiaanvisser/clay.png)](https://travis-ci.org/sebastiaanvisser/clay)
diff --git a/clay.cabal b/clay.cabal
--- a/clay.cabal
+++ b/clay.cabal
@@ -1,5 +1,5 @@
 Name:     clay
-Version:  0.13.2
+Version:  0.13.3
 Synopsis: CSS preprocessor as embedded Haskell.
 Description:
   Clay is a CSS preprocessor like LESS and Sass, but implemented as an embedded
@@ -24,7 +24,7 @@
 Build-Type:    Simple
 
 Extra-Source-Files:
-  README.md CHANGELOG
+  README.md CHANGELOG CONTRIBUTING.md
 
 Tested-With:
   GHC==8.2.2,
@@ -73,7 +73,7 @@
     Clay.Transition
 
   Build-Depends:
-    base  >= 4.7  && < 5,
+    base  >= 4.10 && < 5,
     mtl   >= 1    && < 2.3,
     text  >= 0.11 && < 1.3
   GHC-Options: -Wall -Wcompat
@@ -83,7 +83,7 @@
   HS-Source-Dirs: spec, src
   main-is: Spec.hs
   Build-Depends:
-    base                 >= 4.7  && < 5,
+    base                 >= 4.10  && < 5,
     mtl                  >= 1     && < 2.3,
     text                 >= 0.11  && < 1.3,
     hspec                >= 2.2.0 && < 2.8,
diff --git a/src/Clay/Display.hs b/src/Clay/Display.hs
--- a/src/Clay/Display.hs
+++ b/src/Clay/Display.hs
@@ -70,8 +70,14 @@
 -- * Cursor
 
 , Cursor(..)
-, crosshair, cursorDefault, pointer, move, eResize, neResize, nwResize, nResize, seResize, swResize, sResize, wResize, cursorText, wait, cursorProgress, help, cursorUrl
-
+, cursorUrl
+, cursorDefault
+, contextMenu, help, pointer, cursorProgress, wait
+, cell, crosshair, cursorText, vText
+, alias, cursorCopy, move, noDrop, notAllowed, grab, grabbing
+, allScroll, colResize, rowResize, nResize, eResize, sResize, wResize
+, neResize, nwResize, seResize, swResize, ewResize, nsResize, neswResize, nwseResize
+, zoomIn, zoomOut
 )
 where
 
@@ -257,28 +263,65 @@
     cursor :: a -> Css
     cursor = key "cursor"
 
-newtype CursorValue a = CursorValue Value deriving (Val,Inherit,Auto)
+newtype CursorValue a = CursorValue Value deriving (Val,Inherit,Auto,None)
 
 instance Cursor (CursorValue a)
 
-crosshair,cursorDefault,pointer,move,eResize,neResize,nwResize,nResize,seResize,swResize,sResize,wResize,cursorText,wait,cursorProgress,help :: CursorValue Value
+cursorUrl :: Text -> CursorValue Value
+cursorUrl u = CursorValue $ value ("url(\"" <> u <> "\")")
 
-crosshair = CursorValue "crosshair"
+-- Using the classification from https://developer.mozilla.org/en-US/docs/Web/CSS/cursor
+cursorDefault
+  , contextMenu, help, pointer, cursorProgress, wait
+  , cell, crosshair, cursorText, vText
+  , alias, cursorCopy, move, noDrop, notAllowed, grab, grabbing
+  , allScroll, colResize, rowResize, nResize, eResize, sResize, wResize
+  , neResize, nwResize, seResize, swResize, ewResize, nsResize, neswResize, nwseResize
+  , zoomIn, zoomOut :: CursorValue Value
+
+-- General
 cursorDefault = CursorValue "default"
+
+-- Links & status
+contextMenu = CursorValue "context-menu"
+help = CursorValue "help"
 pointer = CursorValue "pointer"
+cursorProgress = CursorValue "progress"
+wait = CursorValue "wait"
+
+-- Selection
+cell = CursorValue "cell"
+crosshair = CursorValue "crosshair"
+cursorText = CursorValue "text"
+vText = CursorValue "vertical-text"
+
+-- Drag & drop
+alias = CursorValue "alias"
+cursorCopy = CursorValue "copy"
 move = CursorValue "move"
+noDrop = CursorValue "no-drop"
+notAllowed = CursorValue "not-allowed"
+grab = CursorValue "grab"
+grabbing = CursorValue "grabbing"
+
+-- Resizing & scrolling
+allScroll = CursorValue "all-scroll"
+colResize = CursorValue "col-resize"
+rowResize = CursorValue "row-resize"
+nResize = CursorValue "n-resize"
 eResize = CursorValue "e-resize"
+sResize = CursorValue "s-resize"
+wResize = CursorValue "w-resize"
+
 neResize = CursorValue "ne-resize"
 nwResize = CursorValue "nw-resize"
-nResize = CursorValue "n-resize"
 seResize = CursorValue "se-resize"
 swResize = CursorValue "sw-resize"
-sResize = CursorValue "s-resize"
-wResize = CursorValue "w-resize"
-cursorText = CursorValue "text"
-wait = CursorValue "wait"
-cursorProgress = CursorValue "progress"
-help = CursorValue "help"
+ewResize = CursorValue "ew-resize"
+nsResize = CursorValue "ns-resize"
+neswResize = CursorValue "nesw-resize"
+nwseResize = CursorValue "nwse-resize"
 
-cursorUrl :: Text -> CursorValue Value
-cursorUrl u = CursorValue $ value ("url(\"" <> u <> "\")")
+-- Zooming
+zoomIn = CursorValue "zoom-in"
+zoomOut = CursorValue "zoom-out"
diff --git a/src/Clay/Size.hs b/src/Clay/Size.hs
--- a/src/Clay/Size.hs
+++ b/src/Clay/Size.hs
@@ -230,10 +230,10 @@
 sym :: (a -> a -> a -> a -> Css) -> a -> Css
 sym k a = k a a a a
 
-sym3 :: (a -> a -> a -> a -> Css) -> a -> a -> a -> Css
+sym3 :: (tb -> l -> tb -> r -> Css) -> tb -> l -> r -> Css
 sym3 k tb l r = k tb l tb r
 
-sym2 :: (a -> a -> a -> a -> Css) -> a -> a -> Css
+sym2 :: (tb -> lr -> tb -> lr -> Css) -> tb -> lr -> Css
 sym2 k tb lr = k tb lr tb lr
 
 -------------------------------------------------------------------------------
diff --git a/src/Clay/Transition.hs b/src/Clay/Transition.hs
--- a/src/Clay/Transition.hs
+++ b/src/Clay/Transition.hs
@@ -25,7 +25,7 @@
 , TimingFunction
 , transitionTimingFunction
 , transitionTimingFunctions
-, ease, easeIn, easeOut, easeInOut, linear, stepStart, stepStop
+, ease, easeIn, easeOut, easeInOut, linear, stepStart, stepEnd, stepStop
 , stepsStart, stepsStop
 , cubicBezier
 
@@ -75,7 +75,7 @@
 newtype TimingFunction = TimingFunction Value
   deriving (Val, Other, Auto)
 
-ease, easeIn, easeOut, easeInOut, linear, stepStart, stepStop :: TimingFunction
+ease, easeIn, easeOut, easeInOut, linear, stepStart, stepEnd, stepStop :: TimingFunction
 
 ease       = other "ease"
 easeIn     = other "ease-in"
