diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -1,1 +1,2 @@
 dist
+.stack-work
diff --git a/.travis.yml b/.travis.yml
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,50 +1,33 @@
-# from https://github.com/hvr/multi-ghc-travis
-
 # explicitly request container-based infrastructure
 sudo: false
 
 env:
- - CABALVER=1.22 GHCVER=7.8.4 # see note about Alex/Happy
- - CABALVER=1.22 GHCVER=7.10.3 # see note about Alex/Happy
+ - GHCVER=7.10.3
 
+cache:
+  directories:
+  - ~/.stack
+
 addons:
   apt:
     sources:
     - hvr-ghc
     packages:
-    - ghc-7.6.3
-    - ghc-7.8.4
     - ghc-7.10.3
-    - cabal-install-1.22
     - libgsl0-dev
     - liblapack-dev
     - libgtk-3-dev
 
 before_install:
- - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
+ - export PATH=/opt/ghc/$GHCVER/bin:$PATH
+ - mkdir -p ~/.local/bin
+ - export PATH=~/.local/bin:$PATH
+ - travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar -xzO --wildcards '*/stack' > ~/.local/bin/stack
+ - chmod a+x ~/.local/bin/stack
 
 install:
- - cabal update
- - cabal install alex
- - cabal install happy
- - cabal install gtk2hs-buildtools
- - for pkg in $(ghc-pkg list --user); do ghc-pkg unregister --force ${pkg}; done
- - cabal install --only-dependencies --enable-tests --enable-benchmarks --reorder-goals
+  - stack setup --no-terminal
+  - stack build --only-snapshot --no-terminal
 
-# Here starts the actual work to be performed for the package under test; any command which exits with a non-zero exit code causes the build to fail.
 script:
- - cabal configure --enable-tests --enable-benchmarks -v2  # -v2 provides useful information for debugging
- - cabal build   # this builds all libraries and executables (including tests/benchmarks)
- - cabal test --show-details=always
-# - cabal check
- - cabal sdist   # tests that a source-distribution can be generated
-
-# The following scriptlet checks that the resulting source distribution can be built & installed
- - export SRC_TGZ=$(cabal info . | awk '{print $2 ".tar.gz";exit}') ;
-   cd dist/;
-   if [ -f "$SRC_TGZ" ]; then
-      cabal install "$SRC_TGZ";
-   else
-      echo "expected '$SRC_TGZ' not found";
-      exit 1;
-   fi
+  - stack build --no-terminal
diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+0.9.0.8
+---
+* Make title text smaller
+
 0.9.0.7
 ---
 * Put scrolledWindow inside expander
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.9.0.7
+version:             0.9.0.8
 synopsis:            Real-time line plotter for generic data
 license:             BSD3
 license-file:        LICENSE
@@ -32,7 +32,6 @@
                      PlotHo.Plotter,
                      PlotHo.PlotTypes,
                      SetHo.LookupTree
-                     SetHo.OptionsWidget
 
   build-depends:     base >= 4.6.0.0 && < 5
                      , bytestring
@@ -52,7 +51,7 @@
                      , vector
 
   ghc-options:      -O2 -Wall
-  ghc-prof-options: -O2 -Wall -prof -fprof-auto -fprof-cafs -rtsopts
+  ghc-prof-options: -O2 -Wall
 
 
 flag examples
@@ -71,8 +70,8 @@
                        , Plot-ho-matic
                        , containers
 
-  ghc-options:         -O2 -with-rtsopts=-T
-  ghc-prof-options:    -O2 -Wall -prof -fprof-auto -fprof-cafs -rtsopts
+  ghc-options:         -O2 -Wall -with-rtsopts=-T
+  ghc-prof-options:    -O2 -Wall -with-rtsopts=-T
 
 executable set-example
   if flag(examples)
@@ -86,5 +85,5 @@
                        , Plot-ho-matic
                        , generic-accessors
 
-  ghc-options:         -O2 -with-rtsopts=-T
-  ghc-prof-options:    -O2 -Wall -prof -fprof-auto -fprof-cafs -rtsopts
+  ghc-options:         -O2 -Wall -with-rtsopts=-T
+  ghc-prof-options:    -O2 -Wall -with-rtsopts=-T
diff --git a/src/PlotHo/ChartRender.hs b/src/PlotHo/ChartRender.hs
--- a/src/PlotHo/ChartRender.hs
+++ b/src/PlotHo/ChartRender.hs
@@ -52,7 +52,9 @@
 
     title = case mtitle of
       Nothing -> id
-      Just t -> Chart.layout_title .~ t
+      Just t ->
+        (Chart.layout_title .~ t) .
+        ((Chart.layout_title_style . Chart.font_size) .~ 10)
     layout = Chart.layout_plots .~ map Chart.toPlot allLines
              $ title
              $ Chart.layout_x_axis . Chart.laxis_title .~ "time [s]"
diff --git a/src/SetHo/OptionsWidget.hs b/src/SetHo/OptionsWidget.hs
deleted file mode 100644
--- a/src/SetHo/OptionsWidget.hs
+++ /dev/null
@@ -1,100 +0,0 @@
-{-# OPTIONS_GHC -Wall #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# Language PackageImports #-}
-
-module SetHo.OptionsWidget
-       ( GraphInfo(..)
-       , makeOptionsWidget
-       ) where
-
-import qualified Control.Concurrent as CC
-import "gtk3" Graphics.UI.Gtk ( AttrOp( (:=) ) )
-import qualified "gtk3" Graphics.UI.Gtk as Gtk
-import System.Glib.Signals ( on )
-import Text.Read ( readMaybe )
-import qualified Data.Text as T
-
--- what the graph should draw
-data GraphInfo =
-  GraphInfo { giXScaling :: Bool
-            , giXRange :: Maybe (Double,Double)
-            }
-
-makeOptionsWidget :: CC.MVar GraphInfo -> IO Gtk.VBox
-makeOptionsWidget graphInfoMVar = do
-  -- user selectable range
-  xRange <- Gtk.entryNew
-  Gtk.set xRange [ Gtk.entryEditable := False
-                 , Gtk.widgetSensitive := False
-                 ]
-  xRangeBox <- labeledWidget "x range:" xRange
-  Gtk.set xRange [Gtk.entryText := "(-10,10)"]
-  let updateXRange = do
-        Gtk.set xRange [ Gtk.entryEditable := True
-                       , Gtk.widgetSensitive := True
-                       ]
-        txt <- Gtk.get xRange Gtk.entryText
-        gi <- CC.readMVar graphInfoMVar
-        case readMaybe txt of
-          Nothing -> do
-            putStrLn $ "invalid x range entry: " ++ txt
-            Gtk.set xRange [Gtk.entryText := "(min,max)"]
-          Just (z0,z1) -> if z0 >= z1
-                    then do
-                      putStrLn $ "invalid x range entry (min >= max): " ++ txt
-                      Gtk.set xRange [Gtk.entryText := "(min,max)"]
-                      return ()
-                    else do
-                      _ <- CC.swapMVar graphInfoMVar (gi {giXRange = Just (z0,z1)})
-                      return ()
-  _ <- on xRange Gtk.entryActivate updateXRange
-
-  -- linear or log scaling on the x and y axis?
-  xScalingSelector <- Gtk.comboBoxNewText
-  mapM_ (Gtk.comboBoxAppendText xScalingSelector . T.pack)
-    ["linear (auto)","linear (manual)","logarithmic (auto)"]
-  Gtk.comboBoxSetActive xScalingSelector 0
-  xScalingBox <- labeledWidget "x scaling:" xScalingSelector
-  let updateXScaling = do
-        k <- Gtk.comboBoxGetActive xScalingSelector
-        case k of
-          0 -> do
-            Gtk.set xRange [ Gtk.entryEditable := False
-                           , Gtk.widgetSensitive := False
-                           ]
-            CC.modifyMVar_ graphInfoMVar $
-              \gi -> return $ gi {giXScaling = False, giXRange = Nothing}
-          1 -> do
-            Gtk.set xRange [ Gtk.entryEditable := False
-                           , Gtk.widgetSensitive := False
-                           ]
-            CC.modifyMVar_ graphInfoMVar $
-              \gi -> return $ gi {giXScaling = True, giXRange = Nothing}
-          _ -> error "the \"impossible\" happened: x scaling comboBox index should be < 3"
-  updateXScaling
-  _ <- on xScalingSelector Gtk.changed updateXScaling
-
-  -- vbox to hold the little window on the left
-  vbox <- Gtk.vBoxNew False 4
-
-  Gtk.set vbox [ Gtk.containerChild := xScalingBox
-               , Gtk.boxChildPacking   xScalingBox := Gtk.PackNatural
-               , Gtk.containerChild := xRangeBox
-               , Gtk.boxChildPacking   xRangeBox := Gtk.PackNatural
-               ]
-
-  return vbox
-
-
-
--- helper to make an hbox with a label
-labeledWidget :: Gtk.WidgetClass a => String -> a -> IO Gtk.HBox
-labeledWidget name widget = do
-  label <- Gtk.labelNew (Just name)
-  hbox <- Gtk.hBoxNew False 4
-  Gtk.set hbox [ Gtk.containerChild := label
-               , Gtk.containerChild := widget
-               , Gtk.boxChildPacking label := Gtk.PackNatural
---               , Gtk.boxChildPacking widget := Gtk.PackNatural
-               ]
-  return hbox
