diff --git a/Chart.cabal b/Chart.cabal
--- a/Chart.cabal
+++ b/Chart.cabal
@@ -1,5 +1,5 @@
 Name: Chart
-Version: 1.3.1
+Version: 1.3.2
 License: BSD3
 License-file: LICENSE
 Copyright: Tim Docker, 2006-2014
@@ -19,7 +19,7 @@
   Build-depends: base >= 3 && < 5
                , old-locale
                , time, mtl, array
-               , lens >= 3.9 && < 4.5
+               , lens >= 3.9 && < 4.7
                , colour >= 2.2.1 && < 2.4
                , data-default-class < 0.1
                , mtl >= 2.0 && < 2.3
diff --git a/Graphics/Rendering/Chart/Axis/Int.hs b/Graphics/Rendering/Chart/Axis/Int.hs
--- a/Graphics/Rendering/Chart/Axis/Int.hs
+++ b/Graphics/Rendering/Chart/Axis/Int.hs
@@ -65,8 +65,16 @@
 
     goodness vs          = abs (genericLength vs - nSteps)
 
-    (alt0:alts)          = map (\n -> steps n range) sampleSteps
+    (alt0:alts)          = map (\n -> steps n range) sampleSteps'
 
+    -- throw away sampleSteps that are definitely too small as
+    -- they takes a long time to process                           
+    sampleSteps'         = let rangeMag = ceiling (snd range - fst range)
+                               
+                               (s1,s2) = span (< (rangeMag `div` nSteps)) sampleSteps
+                           in ((reverse . take 5 . reverse) s1) ++ s2
+
+    -- generate all possible step sizes
     sampleSteps          = [1,2,5] ++ sampleSteps1
     sampleSteps1         = [10,20,25,50] ++ map (*10) sampleSteps1
 
diff --git a/Graphics/Rendering/Chart/Axis/LocalTime.hs b/Graphics/Rendering/Chart/Axis/LocalTime.hs
--- a/Graphics/Rendering/Chart/Axis/LocalTime.hs
+++ b/Graphics/Rendering/Chart/Axis/LocalTime.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Graphics.Rendering.Chart.Axis.LocalTime
@@ -22,9 +24,13 @@
     ) where
  
 import Data.Default.Class
+#if MIN_VERSION_time(1,5,0)
+import Data.Time hiding (months)
+#else
 import Data.Time
-import Data.Fixed
 import System.Locale (defaultTimeLocale)
+#endif
+import Data.Fixed
 import Control.Lens
 
 import Graphics.Rendering.Chart.Axis.Types
diff --git a/Graphics/Rendering/Chart/Easy.hs b/Graphics/Rendering/Chart/Easy.hs
--- a/Graphics/Rendering/Chart/Easy.hs
+++ b/Graphics/Rendering/Chart/Easy.hs
@@ -27,10 +27,11 @@
   points,
   bars,
   setColors,
-  
+  setShapes
   ) where
 
 import Control.Lens
+import Control.Monad(when)
 import Data.Default.Class
 import Data.Colour hiding (over) -- overlaps with lens over function
 import Data.Colour.Names
@@ -42,6 +43,11 @@
 setColors :: [AlphaColour Double] -> EC l ()
 setColors cs = liftCState $ colors .= cycle cs
 
+-- | Set the contents of the shape source, for
+-- subsequent plots
+setShapes :: [PointShape] -> EC l ()
+setShapes ps = liftCState $ shapes .= cycle ps
+
 -- | Constuct a line plot with the given title and
 -- data, using the next available color.
 line :: String -> [[(x,y)]]  -> EC l (PlotLines x y)
@@ -62,7 +68,17 @@
     plot_points_style . point_color .= color
     plot_points_style . point_shape .= shape
     plot_points_style . point_radius .= 2
+    
+    -- Show borders for unfilled shapes
+    when (not (isFilled shape)) $ do
+        plot_points_style . point_border_color .= color
+        plot_points_style . point_border_width .= 1
 
+isFilled :: PointShape -> Bool
+isFilled PointShapeCircle = True
+isFilled PointShapePolygon{} = True
+isFilled _ = False
+    
 -- | Construct a bar chart with the given titles and data, using the
 -- next available colors    
 bars :: (PlotValue x, BarsPlotValue y) => [String] -> [(x,[y])] -> EC l (PlotBars x y)
diff --git a/Graphics/Rendering/Chart/Layout.hs b/Graphics/Rendering/Chart/Layout.hs
--- a/Graphics/Rendering/Chart/Layout.hs
+++ b/Graphics/Rendering/Chart/Layout.hs
@@ -492,6 +492,12 @@
 instance Default (StackedLayouts x) where
   def = StackedLayouts [] True
 
+
+
+instance Ord x => ToRenderable (StackedLayouts x) where
+  toRenderable = renderStackedLayouts
+
+
 -- | Render several layouts with the same x-axis type and range,
 --   vertically stacked so that their origins and x-values are aligned.
 --
