diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+HEAD
+---
+* RTS stats compatability
+* upgrade stack LTS
+
 0.12.2.0
 ---
 * add a diff button to setHo
diff --git a/Plot-ho-matic.cabal b/Plot-ho-matic.cabal
--- a/Plot-ho-matic.cabal
+++ b/Plot-ho-matic.cabal
@@ -1,5 +1,5 @@
 name:                Plot-ho-matic
-version:             0.12.2.2
+version:             0.12.2.3
 synopsis:            Real-time line plotter for generic data
 license:             BSD3
 license-file:        LICENSE
@@ -26,7 +26,8 @@
   default-language:  Haskell2010
   exposed-modules:   PlotHo, SetHo
 
-  other-modules:     PlotHo.Channel
+  other-modules:     PlotHoCommon
+                     PlotHo.Channel
                      PlotHo.ChartRender
                      PlotHo.HistoryChannel
                      PlotHo.GraphWidget
diff --git a/src/PlotHo/Plotter.hs b/src/PlotHo/Plotter.hs
--- a/src/PlotHo/Plotter.hs
+++ b/src/PlotHo/Plotter.hs
@@ -6,8 +6,6 @@
        ( runPlotter
        ) where
 
-import qualified GHC.Stats
-
 import Control.Monad ( unless, void )
 import Control.Monad.IO.Class ( MonadIO(..) )
 import qualified Control.Concurrent as CC
@@ -22,6 +20,7 @@
 import System.Glib.Signals ( on )
 import Prelude
 
+import PlotHoCommon ( getLiveBytes, getRTSStatsEnabled )
 import PlotHo.GraphWidget ( newGraph )
 import PlotHo.PlotTypes ( Channel(..), Channel'(..), PlotterOptions(..) )
 
@@ -29,7 +28,7 @@
 runPlotter :: Maybe PlotterOptions -> [Channel] -> IO ()
 runPlotter mplotterOptions channels = do
   let plotterOptions = fromMaybe def mplotterOptions
-  statsEnabled <- GHC.Stats.getGCStatsEnabled
+  rtsStatsEnabled <- getRTSStatsEnabled
 
   unless CC.rtsSupportsBoundThreads $ do
     putStr $ unlines
@@ -52,11 +51,10 @@
   statsLabel <- Gtk.labelNew (Nothing :: Maybe String)
   let statsWorker = do
         CC.threadDelay 500000
-        msg <- if statsEnabled
+        msg <- if rtsStatsEnabled
                then do
-                 stats <- GHC.Stats.getGCStats
-                 return $ printf "The current memory usage is %.2f MB"
-                   ((realToFrac (GHC.Stats.currentBytesUsed stats) :: Double) /(1024*1024))
+                 liveBytes <- getLiveBytes
+                 return $ printf "The current memory usage is %.2f MB" (liveBytes /(1024*1024))
                else return "(enable GHC statistics with +RTS -T)"
         Gtk.postGUISync $ Gtk.labelSetText statsLabel ("Welcome to Plot-ho-matic!\n" ++ msg)
         statsWorker
diff --git a/src/PlotHoCommon.hs b/src/PlotHoCommon.hs
new file mode 100644
--- /dev/null
+++ b/src/PlotHoCommon.hs
@@ -0,0 +1,23 @@
+{-# OPTIONS_GHC -Wall #-}
+{-# Language CPP #-}
+
+module PlotHoCommon
+  ( getRTSStatsEnabled
+  , getLiveBytes
+  ) where
+
+import qualified GHC.Stats
+
+getRTSStatsEnabled :: IO Bool
+#if __GLASGOW_HASKELL__ >= 802
+getRTSStatsEnabled = GHC.Stats.getRTSStatsEnabled
+#else
+getRTSStatsEnabled = GHC.Stats.getGCStatsEnabled
+#endif
+
+getLiveBytes :: IO Double
+#if __GLASGOW_HASKELL__ >= 802
+getLiveBytes = realToFrac . GHC.Stats.gcdetails_live_bytes . GHC.Stats.gc <$> GHC.Stats.getRTSStats
+#else
+getLiveBytes = realToFrac . GHC.Stats.currentBytesUsed <$> GHC.Stats.getGCStats
+#endif
diff --git a/src/SetHo.hs b/src/SetHo.hs
--- a/src/SetHo.hs
+++ b/src/SetHo.hs
@@ -9,8 +9,6 @@
        , runSetter
        ) where
 
-import qualified GHC.Stats
-
 import Accessors.Dynamic ( DTree )
 import qualified Control.Concurrent as CC
 import Control.Monad.IO.Class ( liftIO )
@@ -22,6 +20,7 @@
 import Text.Printf ( printf )
 import System.Glib.Signals ( on )
 
+import PlotHoCommon ( getLiveBytes, getRTSStatsEnabled )
 import SetHo.LookupTree ( newLookupTreeview )
 
 data SetHoConfig
@@ -45,7 +44,7 @@
   let config = case mconfig of
         Just r -> r
         Nothing -> defaultSetHoConfig
-  statsEnabled <- GHC.Stats.getGCStatsEnabled
+  rtsStatsEnabled <- getRTSStatsEnabled
 
   counterRef <- newIORef 0
   upstreamCounterRef <- newIORef Nothing
@@ -61,11 +60,10 @@
 
   statsLabel <- Gtk.labelNew (Nothing :: Maybe String)
   let makeStatsMessage = do
-        statsMsg <- if statsEnabled
+        statsMsg <- if rtsStatsEnabled
                then do
-                 stats <- GHC.Stats.getGCStats
-                 return $ printf "The current memory usage is %.2f MB"
-                   ((realToFrac (GHC.Stats.currentBytesUsed stats) :: Double) /(1024*1024))
+                 liveBytes <- getLiveBytes
+                 return $ printf "The current memory usage is %.2f MB" (liveBytes /(1024*1024))
                else return "(enable GHC statistics with +RTS -T)"
         counter <- readIORef counterRef
         mupstreamCounter <- readIORef upstreamCounterRef
