diff --git a/clay.cabal b/clay.cabal
--- a/clay.cabal
+++ b/clay.cabal
@@ -1,5 +1,5 @@
 Name:     clay
-Version:  0.9.0.1
+Version:  0.10
 Synopsis: CSS preprocessor as embedded Haskell.
 Description:
   Clay is a CSS preprocessor like LESS and Sass, but implemented as an embedded
@@ -11,8 +11,14 @@
   .
   The API documentation can be found in the top level module "Clay".
   .
-  > 0.9 -> 0.9.0.1
-  >  - Fixed bug in easing properties.
+  > 0.9 -> 0.10
+  > - Bumped up text requirement.
+  > - Added cursor property.
+  > - Added vertical-align property.
+  > - Removed Abs constraint from Geometry functions.
+  > - Added support for rem dimensions.
+  > - Added support for ListStyle.
+  > Thanks to Lorenzo Bolla, Fraser Murray, Heather and Sergey!
 
 Author:        Sebastiaan Visser
 Maintainer:    Sebastiaan Visser <code@fvisser.nl>
@@ -67,7 +73,7 @@
   Build-Depends:
     base  >= 4    && < 5,
     mtl   >= 1    && < 2.3,
-    text  >= 0.11 && < 1.2
+    text  >= 0.11 && < 1.3
 
 Test-Suite Test-Clay
   Type: exitcode-stdio-1.0
@@ -76,7 +82,7 @@
   Build-Depends:
     base                 >= 4    && < 5,
     mtl                  >= 1    && < 2.3,
-    text                 >= 0.11 && < 1.2,
+    text                 >= 0.11 && < 1.3,
     HUnit                >= 1.2  && < 1.3,
     test-framework       >= 0.8  && < 0.9,
     test-framework-hunit >= 0.3  && < 0.4
diff --git a/src/Clay/Display.hs b/src/Clay/Display.hs
--- a/src/Clay/Display.hs
+++ b/src/Clay/Display.hs
@@ -61,6 +61,16 @@
 , visiblePainted, visibleFill, visibleStroke, painted
 , fillEvents, strokeEvents, allEvents
 
+-- * Vertical align.
+
+, VerticalAlign(..)
+, baseline, middle, vAlignSub, textTop, textBottom, vAlignTop, vAlignBottom
+
+-- * Cursor
+
+, Cursor(..)
+, crosshair, cursorDefault, pointer, move, eResize, neResize, nwResize, nResize, seResize, swResize, sResize, wResize, cursorText, wait, cursorProgress, help, cursorUrl
+          
 )
 where
 
@@ -71,6 +81,7 @@
 import Clay.Property
 import Clay.Stylesheet
 import Clay.Common
+import Data.Text (Text)    
 
 -------------------------------------------------------------------------------
 
@@ -211,3 +222,56 @@
 
 pointerEvents :: PointerEvents -> Css
 pointerEvents = key "pointer-events"
+
+-------------------------------------------------------------------------------
+
+class (Val a) => VerticalAlign a where
+    verticalAlign :: a -> Css
+    verticalAlign = key "vertical-align"
+
+newtype VerticalAlignValue a = VerticalAlignValue Value deriving (Val)
+
+instance VerticalAlign (VerticalAlignValue a)
+instance VerticalAlign (Size a)
+
+baseline,middle,vAlignSub,textTop,textBottom,vAlignTop,vAlignBottom :: VerticalAlignValue Value
+
+baseline = VerticalAlignValue "baseline"
+middle = VerticalAlignValue "middle"
+vAlignSub = VerticalAlignValue "sub"
+textTop = VerticalAlignValue "text-top"
+textBottom = VerticalAlignValue "text-bottom"
+vAlignTop = VerticalAlignValue "top"
+vAlignBottom = VerticalAlignValue "bottom"
+
+-------------------------------------------------------------------------------               
+
+class (Val a) => Cursor a where
+    cursor :: a -> Css
+    cursor = key "cursor"
+
+newtype CursorValue a = CursorValue Value deriving (Val,Inherit,Auto)
+
+instance Cursor (CursorValue a)
+
+crosshair,cursorDefault,pointer,move,eResize,neResize,nwResize,nResize,seResize,swResize,sResize,wResize,cursorText,wait,cursorProgress,help :: CursorValue Value
+                                                                                                                                          
+crosshair = CursorValue "crosshair"
+cursorDefault = CursorValue "cursorDefault"
+pointer = CursorValue "pointer"
+move = CursorValue "move"
+eResize = CursorValue "e-resize"
+neResize = CursorValue "ne-resize"
+nwResize = CursorValue "nw-resize"
+nResize = CursorValue "n-resize"
+seResize = CursorValue "se-resize"
+swResize = CursorValue "sw-resize"
+sResize = CursorValue "sResize"
+wResize = CursorValue "sResize"
+cursorText = CursorValue "text"
+wait = CursorValue "wait"
+cursorProgress = CursorValue "progress"
+help = CursorValue "help"
+
+cursorUrl :: Text -> CursorValue Value
+cursorUrl u = CursorValue $ value ("url(\"" <> u <> "\")")
diff --git a/src/Clay/Geometry.hs b/src/Clay/Geometry.hs
--- a/src/Clay/Geometry.hs
+++ b/src/Clay/Geometry.hs
@@ -23,7 +23,7 @@
 
 -------------------------------------------------------------------------------
 
-size, top, left, bottom, right :: Size Abs -> Css
+size, top, left, bottom, right :: Size a -> Css
 
 size      = key "size"
 top       = key "top"
@@ -42,10 +42,10 @@
 
 -------------------------------------------------------------------------------
 
-padding :: Size Abs -> Size Abs -> Size Abs -> Size Abs -> Css
+padding :: Size a -> Size a -> Size a -> Size a -> Css
 padding a b c d = key "padding" (a ! b ! c ! d)
 
-paddingTop, paddingLeft, paddingRight, paddingBottom :: Size Abs -> Css
+paddingTop, paddingLeft, paddingRight, paddingBottom :: Size a -> Css
 
 paddingTop    = key "padding-top"
 paddingLeft   = key "padding-left"
@@ -54,10 +54,10 @@
 
 -------------------------------------------------------------------------------
 
-margin :: Size Abs -> Size Abs -> Size Abs -> Size Abs -> Css
+margin :: Size a -> Size a -> Size a -> Size a -> Css
 margin a b c d = key "margin"  (a ! b ! c ! d)
 
-marginTop, marginLeft, marginRight, marginBottom :: Size Abs -> Css
+marginTop, marginLeft, marginRight, marginBottom :: Size a -> Css
 
 marginTop     = key "margin-top"
 marginLeft    = key "margin-left"
diff --git a/src/Clay/List.hs b/src/Clay/List.hs
--- a/src/Clay/List.hs
+++ b/src/Clay/List.hs
@@ -3,11 +3,42 @@
 ( ListStyleType
 , listStyleType
 , disc
+, armenian
+, circleListStyle
+, cjkIdeographic
 , decimal
+, decimalLeadingZero
+, georgian
+, hebrew
 , hiragana
+, hiraganaIroha
+, katakana
+, katakanaIroha
+, lowerAlpha
+, lowerGreek
+, lowerLatin
+, lowerRoman
+, square
+, upperAlpha
+, upperLatin
+, upperRoman
+
+, ListStylePosition
+, listStylePosition
+, inside
+, outside
+
+, ListStyleImage
+, listStyleImage
+, imageUrl
+
+, listStyle
 )
 where
 
+import Data.Monoid
+import Data.Text (Text)
+
 import Clay.Common
 import Clay.Property
 import Clay.Stylesheet
@@ -15,11 +46,53 @@
 newtype ListStyleType = ListStyleType Value
   deriving (Val, Initial, Inherit, None, Other)
 
-disc, decimal, hiragana  :: ListStyleType
+disc, armenian, circleListStyle, cjkIdeographic, decimal, decimalLeadingZero, georgian
+    , hebrew, hiragana, hiraganaIroha, katakana, katakanaIroha, lowerAlpha
+    , lowerGreek, lowerLatin, lowerRoman, square, upperAlpha, upperLatin, upperRoman :: ListStyleType
 
-disc        = ListStyleType "disc"
-decimal     = ListStyleType "decimal"
-hiragana    = ListStyleType "hiragana"
+disc                = ListStyleType "disc"
+armenian            = ListStyleType "armenian"
+circleListStyle     = ListStyleType "circle"
+cjkIdeographic      = ListStyleType "cjk-ideographic"
+decimal             = ListStyleType "decimal"
+decimalLeadingZero  = ListStyleType "decimal-leading-zero"
+georgian            = ListStyleType "georgian"
+hebrew              = ListStyleType "hebrew"
+hiragana            = ListStyleType "hiragana"
+hiraganaIroha       = ListStyleType "hiragana-iroha"
+katakana            = ListStyleType "katakana"
+katakanaIroha       = ListStyleType "katakana-iroha"
+lowerAlpha          = ListStyleType "lower-alpha"
+lowerGreek          = ListStyleType "lower-greek"
+lowerLatin          = ListStyleType "lower-latin"
+lowerRoman          = ListStyleType "lower-roman"
+square              = ListStyleType "square"
+upperAlpha          = ListStyleType "upper-alpha"
+upperLatin          = ListStyleType "upper-latin"
+upperRoman          = ListStyleType "upper-roman"
 
 listStyleType :: ListStyleType -> Css
 listStyleType = key "list-style-type"
+
+newtype ListStylePosition = ListStylePosition Value
+  deriving (Val, Initial, Inherit, None, Other)
+
+inside, outside :: ListStylePosition
+
+inside  = ListStylePosition "inside"
+outside = ListStylePosition "outside"
+
+listStylePosition :: ListStylePosition -> Css
+listStylePosition = key "list-style-position"
+
+newtype ListStyleImage = ListStyleImage Value
+  deriving (Val, Initial, Inherit, None, Other)
+
+listStyleImage :: ListStyleImage -> Css
+listStyleImage = key "list-style-image"
+
+imageUrl :: Text -> ListStyleImage
+imageUrl u = ListStyleImage ("url(" <> value (Literal u) <> ")")
+
+listStyle :: ListStyleType -> ListStylePosition -> ListStyleImage -> Css
+listStyle a b c = key "list-style" (a ! b ! c)
diff --git a/src/Clay/Size.hs b/src/Clay/Size.hs
--- a/src/Clay/Size.hs
+++ b/src/Clay/Size.hs
@@ -20,6 +20,7 @@
 , em
 , ex
 , pct
+, rem
 
 -- * Shorthands for properties that can be applied separately to each box side.
 
@@ -42,6 +43,7 @@
 where
 
 import Data.Monoid
+import Prelude hiding (rem)
 
 import Clay.Common
 import Clay.Property
@@ -49,7 +51,7 @@
 
 -------------------------------------------------------------------------------
 
--- | Sizes can be relative like percentages.
+-- | Sizes can be relative like percentages or rems.
 data Rel
 
 -- | Sizes can be absolute like pixels, points, etc.
@@ -85,6 +87,11 @@
 
 pct :: Double -> Size Rel
 pct i = Size (value i <> "%")
+
+-- | Size in rem's.
+
+rem :: Double -> Size Rel
+rem i = Size (value i <> "rem")
 
 instance Num (Size Abs) where
   fromInteger = px
