diff --git a/rasa-ext-cursors.cabal b/rasa-ext-cursors.cabal
--- a/rasa-ext-cursors.cabal
+++ b/rasa-ext-cursors.cabal
@@ -1,5 +1,5 @@
 name: rasa-ext-cursors
-version: 0.1.5
+version: 0.1.6
 cabal-version: >=1.10
 build-type: Simple
 license: GPL-3
@@ -24,8 +24,7 @@
         Rasa.Ext.Cursors.Internal.Base
     build-depends:
         base >=4.8 && <5,
-        rasa >=0.1.9 && <0.2,
-        rasa-ext-style >=0.1.4 && <0.2,
+        rasa >=0.1.10 && <0.2,
         text-lens >=0.1.1 && <0.2,
         lens ==4.14.*,
         mtl >=2.2.1 && <2.3,
diff --git a/src/Rasa/Ext/Cursors.hs b/src/Rasa/Ext/Cursors.hs
--- a/src/Rasa/Ext/Cursors.hs
+++ b/src/Rasa/Ext/Cursors.hs
@@ -27,4 +27,5 @@
 
 -- | Registers listeners for the extension. The user should add this to their config.
 cursors :: Action ()
-cursors = beforeEveryRender_ $ buffersDo_ displayRange
+cursors = onInit . onBufAdded $
+  \(BufAdded bufRef) -> bufDo_ bufRef setStyleProvider
diff --git a/src/Rasa/Ext/Cursors/Internal/Actions.hs b/src/Rasa/Ext/Cursors/Internal/Actions.hs
--- a/src/Rasa/Ext/Cursors/Internal/Actions.hs
+++ b/src/Rasa/Ext/Cursors/Internal/Actions.hs
@@ -10,7 +10,6 @@
   ) where
 
 import qualified Yi.Rope as Y
-import qualified Data.Text as T
 
 import Control.Lens
 import Control.Lens.Text
diff --git a/src/Rasa/Ext/Cursors/Internal/Base.hs b/src/Rasa/Ext/Cursors/Internal/Base.hs
--- a/src/Rasa/Ext/Cursors/Internal/Base.hs
+++ b/src/Rasa/Ext/Cursors/Internal/Base.hs
@@ -8,12 +8,11 @@
   , setRanges
   , overEachRange
   , addRange
-  , displayRange
+  , setStyleProvider
   ) where
 
 
 import Rasa.Ext
-import Rasa.Ext.Style
 
 import Control.Monad.State
 import Control.Lens
@@ -23,20 +22,17 @@
 import qualified Yi.Rope as Y
 
 -- | Stores the cursor ranges in each buffer.
-data Cursors = Cursors
-  { _cursors :: [CrdRange]
-  } deriving (Typeable, Show)
-makeLenses ''Cursors
+data Cursors =
+  Cursors [CrdRange]
+  deriving (Typeable, Show)
 
 instance Default Cursors where
-  def = Cursors {
-  _cursors=[Range (Coord 0 0) (Coord 0 1)]
-}
+  def = Cursors [Range (Coord 0 0) (Coord 0 1)]
 
 -- | Adjusts input ranges to contain at least one character.
 ensureSize :: CrdRange -> CrdRange
 ensureSize r@(Range start end)
-  | start == end = 
+  | start == end =
     if start^.coordCol == 0 then r & rEnd %~ moveCursorByN 1
                           else r & rStart %~ moveCursorByN (-1)
   | otherwise = r
@@ -46,14 +42,16 @@
 cleanRanges :: Y.YiString -> [CrdRange] -> [CrdRange]
 cleanRanges txt = fmap (ensureSize . clampRange txt) . reverse . nub . sort
 
--- | A lens over all the stored cursor ranges for a buffer
+-- | Get the list of ranges
 getRanges :: BufAction [CrdRange]
-getRanges = use (bufExt.cursors)
+getRanges = do
+  Cursors ranges <- getBufExt
+  return ranges
 
 setRanges :: [CrdRange] -> BufAction ()
 setRanges new = do
   txt <- getText
-  bufExt.cursors .= cleanRanges txt new
+  setBufExt . Cursors $ cleanRanges txt new
 
 overRanges :: ([CrdRange] -> [CrdRange]) -> BufAction ()
 overRanges f = getRanges >>= setRanges . f
@@ -74,9 +72,9 @@
 addRange :: CrdRange -> BufAction ()
 addRange r = overRanges (++[r])
 
--- | Sets style attributes to show a given range.
-displayRange ::  BufAction ()
-displayRange = rangeDo_ setStyle
+-- | Adds cursor specific styles
+setStyleProvider :: BufAction ()
+setStyleProvider = void . addStyleProvider $ rangeDo setStyle
   where
-    setStyle :: CrdRange -> BufAction ()
-    setStyle r = addStyle r (flair ReverseVideo)
+    setStyle :: CrdRange -> BufAction (Span CrdRange Style)
+    setStyle r = return $ Span r (flair ReverseVideo)
