diff --git a/data/leksah-welcome/LICENSE b/data/leksah-welcome/LICENSE
new file mode 100644
--- /dev/null
+++ b/data/leksah-welcome/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2015 Hamish Mackenzie
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/data/leksah-welcome/leksah-welcome.cabal b/data/leksah-welcome/leksah-welcome.cabal
--- a/data/leksah-welcome/leksah-welcome.cabal
+++ b/data/leksah-welcome/leksah-welcome.cabal
@@ -1,26 +1,26 @@
 name: leksah-welcome
-version: 0.12.0.3
-cabal-version: >=1.2
+version: 0.15.0.0
+cabal-version: 1.12
 build-type: Simple
-license: AllRightsReserved
-license-file: ""
+license: MIT
+license-file: LICENSE
 description:
-             .
-             .
-             .
-             .
-data-dir: ""
+    Example package you can use to try out some of Leksah's features
 
 executable leksah-welcome
-    build-depends: QuickCheck -any, base -any
     main-is: Main.hs
-    buildable: True
+    build-depends:
+        QuickCheck -any,
+        base -any
+    default-language: Haskell2010
     hs-source-dirs: src
 
 test-suite test-leksah-welcome
-    build-depends: QuickCheck -any, base -any
     type: exitcode-stdio-1.0
     main-is: Main.hs
-    buildable: True
-    cpp-options: -DMAIN_FUNCTION=testMain
-    hs-source-dirs: src
+    build-depends:
+        QuickCheck -any,
+        base -any,
+        doctest -any
+    default-language: Haskell2010
+    hs-source-dirs: test
diff --git a/data/leksah-welcome/src/Main.hs b/data/leksah-welcome/src/Main.hs
--- a/data/leksah-welcome/src/Main.hs
+++ b/data/leksah-welcome/src/Main.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP, TemplateHaskell #-}
 -- Welcome to Leksah.  This is a quick sample package for you to
 -- try things out with.  We hope it will be useful for those new
 -- to Haskell or just new to Leksah.
@@ -15,61 +14,37 @@
 
 -- When you are ready to create your own workspace and package.
 --   * Package -> New
---   * When asked for a root folder for your package select a new folder
---     with the desired name of your package
 
--- This is the "Main" module and it exports a "main" function
-module Main (
-    main
-) where
-
 -- Next we are importing some things from other modules.
 -- Leksah can normally addd these imports for you, just
 -- press Ctrl+R (OS X Command+R)
-import Control.Monad (unless)
 import Data.List (stripPrefix)
-import System.Exit (exitFailure)
-import Test.QuickCheck.All (quickCheckAll)
 
--- Simple function to create a hello message.
-hello s = "Hello " ++ s
-
--- QuickCheck is a great tool for writing tests.
--- The following tells QuickCheck that if you strip "Hello "
--- from the start of hello s you will be left with s (for any s).
+-- | Simple function to create a hello message.
+--
+-- The following tells doctest & QuickCheck that if you strip "Hello "
+-- from the start of `hello s` you will be left with `s` (for any `s`).
 -- QuickCheck will create the test data needed to run this test.
-prop_hello s = stripPrefix "Hello " (hello s) == Just s
+--
+-- To automatically run the tests when the package is built, click on
+-- the green tick on the tool leksah tool bar.
+--
+-- To see how this is configured take a look in leksah-welecome.cabal
+-- (you can open it with Package -> Edit).
+--
+-- The code that runs the tests is in the file test/Main.hs.
+--
+-- prop> stripPrefix "Hello " (hello s) == Just s
+hello s = "Hello " ++ s
 
--- exeMain : Executable Entry Point
--- --------------------------------
+-- | Executable Entry Point
+--
 -- Here is the entry point for the leksah-welcome executable
 --
 -- To run it
 --   * Select Leksah menu item Package -> Run (or the cogs on the toolbar)
 --   * Select "exeMain" and press Ctrl+Enter to run them in ghci
 --   * Run "leksah-wellcome" from the command line
-exeMain = do
+main = do
     putStrLn (hello "World")
-
--- testMain : Unit Testing Entry Point
--- -----------------------------------
--- This is the main function uses by the cabal test
---
--- To run these tests
---   * Select Leksah menu item Package -> Test
---   * Select the tick icon on the Leksa toolbar (to enable "cabal test" during builds)
---   * Select "testMain" and press Ctrl+Enter to run them in ghci
---   * Run "cabal test" from the command line in the package directory
-testMain = do
-    allPass <- $quickCheckAll -- Run QuickCheck on all prop_ functions
-    unless allPass exitFailure
-
--- This is a clunky, but portable, way to use the same Main module file
--- for both an application and for unit tests.
--- MAIN_FUNCTION is preprocessor macro set to exeMain or testMain.
--- That way we can use the same file for both an application and for tests.
-#ifndef MAIN_FUNCTION
-#define MAIN_FUNCTION exeMain
-#endif
-main = MAIN_FUNCTION
 
diff --git a/data/leksah-welcome/test/Main.hs b/data/leksah-welcome/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/data/leksah-welcome/test/Main.hs
@@ -0,0 +1,10 @@
+import Test.DocTest
+
+-- Unit Testing Entry Point
+-- ------------------------
+-- This is the main function uses by the cabal test
+--
+-- To run these tests
+--   * Select Leksah menu item Package -> Test
+--   * Select the tick icon on the Leksah toolbar (to enable "cabal test" during builds)
+main = doctest ["-isrc", "src/Main.hs"]
diff --git a/data/main.lksht b/data/main.lksht
--- a/data/main.lksht
+++ b/data/main.lksht
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP, TemplateHaskell #-}
 -----------------------------------------------------------------------------
 --
 -- Module      :  @ModuleName@
@@ -17,33 +16,12 @@
     main
 ) where
 
-import Control.Monad (unless)
 import Data.List (stripPrefix)
-import System.Exit (exitFailure)
-import Test.QuickCheck.All (quickCheckAll)
 
--- Simple function to create a hello message.
+-- | Simple function to create a hello message.
+-- prop> stripPrefix "Hello " (hello s) == Just s
 hello s = "Hello " ++ s
 
--- Tell QuickCheck that if you strip "Hello " from the start of
--- hello s you will be left with s (for any s).
-prop_hello s = stripPrefix "Hello " (hello s) == Just s
-
--- Hello World
-exeMain = do
+main = do
     putStrLn (hello "World")
-
--- Entry point for unit tests.
-testMain = do
-    allPass <- $quickCheckAll -- Run QuickCheck on all prop_ functions
-    unless allPass exitFailure
-
--- This is a clunky, but portable, way to use the same Main module file
--- for both an application and for unit tests.
--- MAIN_FUNCTION is preprocessor macro set to exeMain or testMain.
--- That way we can use the same file for both an application and for tests.
-#ifndef MAIN_FUNCTION
-#define MAIN_FUNCTION exeMain
-#endif
-main = MAIN_FUNCTION
 
diff --git a/data/prefs.lkshp b/data/prefs.lkshp
--- a/data/prefs.lkshp
+++ b/data/prefs.lkshp
@@ -83,5 +83,5 @@
                False
 Browser:       "firefox"
 URL for searching documentation:
-               "http://www.holumbus.org/hayoo/hayoo.html?query="
-     --e.g Hoogle: http://www.haskell.org/hoogle/?q= or Hayoo: http://www.holumbus.org/hayoo/hayoo.html?query=
+               "https://www.haskell.org/hoogle/?q="
+     --e.g Hoogle: https://www.haskell.org/hoogle/?q= or Hayoo: http://hayoo.fh-wedel.de/?query=
diff --git a/data/testmain.lksht b/data/testmain.lksht
new file mode 100644
--- /dev/null
+++ b/data/testmain.lksht
@@ -0,0 +1,23 @@
+-----------------------------------------------------------------------------
+--
+-- Module      :  @ModuleName@
+-- Copyright   :  @Copyright@
+-- License     :  @License@
+--
+-- Maintainer  :  @Maintainer@
+-- Stability   :  @Stability@
+-- Portability :  @Portability@
+--
+-- |
+--
+-----------------------------------------------------------------------------
+
+module @ModuleName@ (
+    main
+) where
+
+import Test.DocTest
+
+main = doctest ["-isrc", "src/Main.hs"]
+
+
diff --git a/leksah.cabal b/leksah.cabal
--- a/leksah.cabal
+++ b/leksah.cabal
@@ -1,5 +1,5 @@
 name: leksah
-version: 0.15.0.1
+version: 0.15.0.2
 cabal-version: >=1.18
 build-type: Simple
 license: GPL
@@ -30,11 +30,14 @@
             data/emacs.lkshk
             data/LICENSE
             data/main.lksht
+            data/testmain.lksht
             data/module.lksht
             data/welcome.txt
             data/leksah-welcome/Setup.lhs
             data/leksah-welcome/leksah-welcome.cabal
+            data/leksah-welcome/LICENSE
             data/leksah-welcome/src/Main.hs
+            data/leksah-welcome/test/Main.hs
             data/empty.lkshs
             data/.gtkrc-2.0
             data/styles/leksah.xml
@@ -186,10 +189,6 @@
     description: Build with support for multithreaded execution
     default: False
 
-flag gtk3
-    Description: Use GTK3 rather than GTK2
-    Default: True
-
 flag loc
     Description: Experimental localization support
     Default: False
@@ -206,10 +205,7 @@
         build-depends: unix >=2.3.1.0 && <2.8
 
     if os(osx)
-        if flag(gtk3)
-          build-depends: gtk3-mac-integration >= 0.3.0.0 && <0.4
-        else
-          build-depends: gtk-mac-integration >= 0.3.0.0 && <0.4
+        build-depends: gtk3-mac-integration >= 0.3.0.0 && <0.4
 
     if flag(yi)
         build-depends: yi >=0.11.2 && <0.12,
@@ -221,16 +217,12 @@
         build-depends: dyre >= 0.8.3 && <0.9
         cpp-options: -DLEKSAH_WITH_YI_DYRE
 
-    if flag(gtk3)
-      build-depends: gtk3 >=0.13.2 && <0.14, gtksourceview3 >=0.13.1.0 && <0.14
-      cpp-options:   -DMIN_VERSION_gtk=MIN_VERSION_gtk3
-    else
-      build-depends: gtk >=0.13.2 && <0.14, gtksourceview2 >=0.13.1.0 && <0.14
+    build-depends: gtk3 >=0.13.2 && <0.14,
+                   gtksourceview3 >=0.13.1.0 && <0.14,
+                   webkitgtk3 >=0.13 && <0.14,
+                   webkitgtk3-javascriptcore -any
+    cpp-options:   -DMIN_VERSION_gtk=MIN_VERSION_gtk3
 
-    if flag(gtk3)
-      build-depends: webkitgtk3 -any, webkitgtk3-javascriptcore -any
-    else
-      build-depends: webkit -any, webkit-javascriptcore -any
     build-depends: jsaddle -any, ghcjs-codemirror -any, hamlet -any, blaze-html -any,
                    lens -any, pretty-show >=1.6.3 && <1.7
     cpp-options: -DWEBKITGTK -DLEKSAH_WITH_CODE_MIRROR
@@ -254,7 +246,7 @@
                        parsec >=2.1.0.1 && <3.2, pretty >=1.0.1.0 && <1.2,
                        regex-tdfa >=1.1 && <1.3, regex-tdfa-text, regex-base ==0.93.*, utf8-string >=0.3.1.1 && <1.1, array >=0.2.0.0 && <0.6,
                        time >=0.1 && <1.6, ltk >= 0.15.0.1 && <0.16, binary-shared >= 0.8 && <0.9, deepseq >= 1.1.0.0 && <1.5,
-                       hslogger >= 1.0.7 && <1.3, leksah-server >=0.15.0.1 && <0.16,
+                       hslogger >= 1.0.7 && <1.3, leksah-server >=0.15.0.2 && <0.16,
                        ghc >=6.10.1 && <7.11, strict >= 0.3.2 && <0.4, conduit >= 1.0.8 && <1.3, text >= 0.11.1.5 && < 1.3,
                        gio >=0.13.0.0 && <0.14, transformers >=0.2.2.0 && <0.5,
                        executable-path >=0.0.3 && <0.1,
@@ -304,11 +296,9 @@
         ghc-options: -threaded
 
     hs-source-dirs: main
-    build-depends: leksah == 0.15.0.1, base >= 4.0.0.0 && <=4.9
-    if flag(gtk3)
-        build-depends: gtk3 >=0.13.2 && <0.14
-    else
-        build-depends: gtk >=0.13.2 && <0.14
+    build-depends: leksah == 0.15.0.2,
+                   base >= 4.0.0.0 && <=4.9,
+                   gtk3 >=0.13.2 && <0.14
     if os(linux) && flag(loc)
         cpp-options: -DLOCALIZATION
         build-depends: hgettext, setlocale
@@ -322,15 +312,15 @@
     ghc-options: -rtsopts -fwarn-missing-fields -fwarn-incomplete-patterns -ferror-spans
 
 executable bewleksah
-    build-depends: leksah ==0.15.0.1, base >=4.0.0.0 && <=4.9,
-                   jsaddle -any, ghcjs-dom -any
-    if flag(gtk3)
-      build-depends: gtk3 >=0.13.2 && <0.14, gtksourceview3 >=0.13.1.0 && <0.14,
-                     webkitgtk3 -any, webkitgtk3-javascriptcore -any
-      cpp-options:   -DMIN_VERSION_gtk=MIN_VERSION_gtk3
-    else
-      build-depends: gtk >=0.13.2 && <0.14, gtksourceview2 >=0.13.1.0 && <0.14,
-                     webkit -any, webkit-javascriptcore -any
+    build-depends: leksah ==0.15.0.2,
+                   base >=4.0.0.0 && <=4.9,
+                   jsaddle -any,
+                   ghcjs-dom -any,
+                   gtk3 >=0.13.2 && <0.14,
+                   gtksourceview3 >=0.13.1.0 && <0.14,
+                   webkitgtk3 >=0.13 && <0.14,
+                   webkitgtk3-javascriptcore -any
+    cpp-options:   -DMIN_VERSION_gtk=MIN_VERSION_gtk3
 
     main-is: Main.hs
     buildable: True
@@ -338,15 +328,22 @@
     hs-source-dirs: bew
 
 test-suite tests
-    build-depends: base >=4.0.0.0 && <4.9, Cabal >=1.10.2.0 && <1.23,
-                   QuickCheck >=2.4.2 && <2.9, leksah ==0.15.0.1,
-                   containers, ltk, leksah-server, hslogger,
-                   transformers, glib, monad-loops, text
-    if flag(gtk3)
-        build-depends: gtk3 >=0.13.2 && <0.14, gtksourceview3 >=0.13.1.0 && <0.14, webkitgtk3 -any
-        cpp-options:   -DMIN_VERSION_gtk=MIN_VERSION_gtk3
-    else
-        build-depends: gtk >=0.13.2 && <0.14, gtksourceview2 >=0.13.1.0 && <0.14, webkit -any
+    build-depends: base >=4.0.0.0 && <4.9,
+                   Cabal >=1.10.2.0 && <1.23,
+                   QuickCheck >=2.4.2 && <2.9,
+                   leksah ==0.15.0.2,
+                   containers,
+                   ltk,
+                   leksah-server,
+                   hslogger,
+                   transformers,
+                   glib,
+                   monad-loops,
+                   text,
+                   gtk3 >=0.13.2 && <0.14,
+                   gtksourceview3 >=0.13.1.0 && <0.14,
+                   webkitgtk3 -any
+    cpp-options:   -DMIN_VERSION_gtk=MIN_VERSION_gtk3
     if flag(yi)
         build-depends: yi
     type: exitcode-stdio-1.0
diff --git a/osx/launcher.sh b/osx/launcher.sh
--- a/osx/launcher.sh
+++ b/osx/launcher.sh
@@ -1,7 +1,9 @@
 #!/bin/sh
 
-if test -e ~/.profile; then
-    export PATH=`. ~/.profile;echo $PATH`
+if test -e ~/.bash_profile; then
+    . ~/.bash_profile
+elif test -e ~/.profile; then
+    . ~/.profile
 fi
 
 if test "x$GTK_DEBUG_LAUNCHER" != x; then
@@ -52,6 +54,8 @@
 
 export hlint_datadir="$bundle_data/hlint"
 
+export vcsgui_datadir="$bundle_data/vcsgui"
+
 APP=name
 I18NDIR="$bundle_data/locale"
 # Set the locale-related variables appropriately:
@@ -86,7 +90,7 @@
 	    export LANG=$L
 	    break
 	fi;
-    done  
+    done
 fi
 unset APPLELANGUAGES L
 
@@ -106,7 +110,7 @@
 APPLELOCALE=`defaults read .GlobalPreferences AppleLocale`
 
 if test -f "$I18NDIR/${APPLELOCALE:0:5}/LC_MESSAGES/$APP.mo"; then
-    if test -z $LANG; then 
+    if test -z $LANG; then
         export LANG="${APPLELOCALE:0:5}"
     fi
 
@@ -118,7 +122,7 @@
 #5-character locale to avoid the "Locale not supported by C library"
 #warning from Gtk -- even though Gtk will translate with a
 #two-character code.
-if test -n $LANG; then 
+if test -n $LANG; then
 #If the language code matches the applelocale, then that's the message
 #locale; otherwise, if it's longer than two characters, then it's
 #probably a good message locale and we'll go with it.
@@ -135,7 +139,7 @@
 	export LC_MESSAGES="en_US"
     else
 	LOC=`find $PREFIX/share/locale -name $LANG???`
-	for L in $LOC; do 
+	for L in $LOC; do
 	    export LC_MESSAGES=$L
 	done
     fi
@@ -145,16 +149,16 @@
     export LC_MESSAGES="en_US"
 fi
 CURRENCY=`echo $APPLELOCALE |  sed -En 's/.*currency=([[:alpha:]]+).*/\1/p'`
-if test "x$CURRENCY" != "x"; then 
+if test "x$CURRENCY" != "x"; then
 #The user has set a special currency. Gtk doesn't install LC_MONETARY files, but Apple does in /usr/share/locale, so we're going to look there for a locale to set LC_CURRENCY to.
     if test -f /usr/local/share/$LC_MESSAGES/LC_MONETARY; then
 	if test -a `cat /usr/local/share/$LC_MESSAGES/LC_MONETARY` == $CURRENCY; then
 	    export LC_MONETARY=$LC_MESSAGES
 	fi
     fi
-    if test -z "$LC_MONETARY"; then 
+    if test -z "$LC_MONETARY"; then
 	FILES=`find /usr/share/locale -name LC_MONETARY -exec grep -H $CURRENCY {} \;`
-	if test -n "$FILES"; then 
+	if test -n "$FILES"; then
 	    export LC_MONETARY=`echo $FILES | sed -En 's%/usr/share/locale/([[:alpha:]_]+)/LC_MONETARY.*%\1%p'`
 	fi
     fi
diff --git a/osx/leksah.bundle b/osx/leksah.bundle
--- a/osx/leksah.bundle
+++ b/osx/leksah.bundle
@@ -137,6 +137,10 @@
     ${prefix:hlint}/share
   </data>
 
+  <data dest="${bundle}/Contents/Resources/share/vcsgui">
+    ${prefix:vcsgui}/share
+  </data>
+
   <!-- Copy in the themes data. You may want to trim this to save space
        in your bundle. -->
   <data>
diff --git a/osx/makedmg.sh b/osx/makedmg.sh
--- a/osx/makedmg.sh
+++ b/osx/makedmg.sh
@@ -10,7 +10,7 @@
 export LEKSAH_SERVER_BIN_DIR=$GHC_USER_PREFIX/$LEKSAH_SERVER_X_X_X_X
 export LEKSAH_SERVER_PREFIX=$GHC_USER_PREFIX/$LEKSAH_SERVER_X_X_X_X/share
 export VCSGUI_BIN_DIR=$GHC_USER_PREFIX/`ghc-pkg$GHCVERSION list |grep '^ *vcsgui-' | head -n1 | tr -d ' \n'`
-export VCSGUI_PREFIX=$GHC_USER_PREFIX/`ghc-pkg$GHCVERSION list |grep '^ *vcsgui-' | head -n1 | tr -d ' \n'`/share
+export VCSGUI_PREFIX=$GHC_USER_PREFIX/`ghc-pkg$GHCVERSION list |grep '^ *vcsgui-' | head -n1 | tr -d ' \n'`
 export HLINT_PREFIX=$GHC_USER_PREFIX/`ghc-pkg$GHCVERSION list |grep '^ *hlint-' | head -n1 | tr -d ' \n'`
 
 #export SANDBOX_BIN_DIR=$PWD/.cabal-sandbox
diff --git a/osx/makedmgs.sh b/osx/makedmgs.sh
--- a/osx/makedmgs.sh
+++ b/osx/makedmgs.sh
@@ -1,21 +1,6 @@
 #!/bin/sh -ex
 
-#export PATH=/Users/hamish/Library/Haskell/bin:/Library/Frameworks/GHC.framework/Versions/7.0.3-i386/usr/bin:$PATH
-#scripts/clean.sh
-#osx/makedmg.sh
-#export PATH=/Users/hamish/Library/Haskell/bin:/Library/Frameworks/GHC.framework/Versions/7.0.4-i386/usr/bin:$PATH
-#scripts/clean.sh
-#osx/makedmg.sh
-#export PATH=/Users/hamish/Library/Haskell/bin:/Library/Frameworks/GHC.framework/Versions/7.4.1-i386/usr/bin:$PATH
-#scripts/clean.sh
-#osx/makedmg.sh
-#export PATH=/Users/hamish/Library/Haskell/bin:/Library/Frameworks/GHC.framework/Versions/7.4.2-i386/usr/bin:$PATH
-#scripts/clean.sh
-#osx/makedmg.sh
-#export PATH=/Users/hamish/Library/Haskell/bin:/Library/Frameworks/GHC.framework/Versions/7.6.3-i386/usr/bin:$PATH
-#scripts/clean.sh
-#osx/makedmg.sh
-export GHCVERSION=-7.6.3
+export GHCVERSION=-7.8.3
 scripts/clean.sh
 osx/makedmg.sh
 export GHCVERSION=
diff --git a/scripts/stage.sh b/scripts/stage.sh
--- a/scripts/stage.sh
+++ b/scripts/stage.sh
@@ -35,7 +35,7 @@
     cd ../leksah-server || exit
     cabal install --enable-tests -j4 --with-ghc=ghc$GHCVERSION || exit
     cabal test || exit
-    cd ../yi || exit
+#    cd ../yi || exit
 #    cabal install -j4 -fpango --with-ghc=ghc$GHCVERSION || exit
     cd ../.. || exit
     cabal install -j4 -fwebkit -f-yi --with-ghc=ghc$GHCVERSION || exit
diff --git a/src/IDE/Build.hs b/src/IDE/Build.hs
--- a/src/IDE/Build.hs
+++ b/src/IDE/Build.hs
@@ -206,7 +206,7 @@
 doBuildChain ms chain@Chain{mcAction = MoDocu} =
     packageDoc' (msBackgroundBuild ms) (msJumpToWarnings ms) (mcEle chain) (constrCont ms (mcPos chain) (mcNeg chain))
 doBuildChain ms chain@Chain{mcAction = MoTest} =
-    packageTest' (mcEle chain) False (constrCont ms (mcPos chain) (mcNeg chain))
+    packageTest' (msBackgroundBuild ms) (msJumpToWarnings ms) (mcEle chain) False (constrCont ms (mcPos chain) (mcNeg chain))
 doBuildChain ms chain@Chain{mcAction = MoCopy} =
     packageCopy' (mcEle chain) (constrCont ms (mcPos chain) (mcNeg chain))
 doBuildChain ms chain@Chain{mcAction = MoRegister} =
diff --git a/src/IDE/Leksah.hs b/src/IDE/Leksah.hs
--- a/src/IDE/Leksah.hs
+++ b/src/IDE/Leksah.hs
@@ -448,7 +448,9 @@
         createDirectoryIfMissing True $ welcomePath</>"src"
         copyFile (welcomeSource</>"Setup.lhs")            (welcomePath</>"Setup.lhs")
         copyFile (welcomeSource</>"leksah-welcome.cabal") (welcomeCabal)
+        copyFile (welcomeSource</>"LICENSE")              (welcomePath</>"LICENSE")
         copyFile (welcomeSource</>"src"</>"Main.hs")      (welcomeMain)
+        copyFile (welcomeSource</>"test"</>"Main.hs")     (welcomePath</>"test"</>"Main.hs")
         defaultWorkspace <- liftIO $ (</> "leksah.lkshw") <$> getHomeDirectory
         defaultExists <- liftIO $ doesFileExist defaultWorkspace
         reflectIDE (do
diff --git a/src/IDE/Metainfo/Provider.hs b/src/IDE/Metainfo/Provider.hs
--- a/src/IDE/Metainfo/Provider.hs
+++ b/src/IDE/Metainfo/Provider.hs
@@ -141,15 +141,18 @@
 loadSystemInfo :: IDEAction
 loadSystemInfo = do
     collectorPath   <-  liftIO getCollectorPath
-    packageIds      <-  liftM nub $ liftIO getInstalledPackageIds
-    packageList     <-  liftIO $ mapM (loadInfosForPackage collectorPath)
-                                                packageIds
-    let scope       =   foldr buildScope (PackScope Map.empty getEmptyDefaultScope)
-                            $ catMaybes packageList
---    liftIO performGC
-    modifyIDE_ (\ide -> ide{systemInfo = Just (GenScopeC (addOtherToScope scope False))})
+    mbPackageIds    <-  liftIO getInstalledPackageIds'
+    case mbPackageIds of
+        Left e -> logMessage ("Please check that ghc-pkg is in your PATH and restart leksah:\n    " <> e) ErrorTag
+        Right packageIds -> do
+            packageList     <-  liftIO $ mapM (loadInfosForPackage collectorPath)
+                                                        (nub packageIds)
+            let scope       =   foldr buildScope (PackScope Map.empty getEmptyDefaultScope)
+                                    $ catMaybes packageList
+        --    liftIO performGC
+            modifyIDE_ (\ide -> ide{systemInfo = Just (GenScopeC (addOtherToScope scope False))})
 
-    return ()
+            return ()
 
 --
 -- | Updates the system info
@@ -161,24 +164,27 @@
     case wi of
         Nothing -> loadSystemInfo
         Just (GenScopeC (PackScope psmap psst)) -> do
-            packageIds          <-  liftIO getInstalledPackageIds
-            let newPackages     =   filter (`Map.member` psmap) packageIds
-            let trashPackages   =   filter (`notElem` packageIds) (Map.keys psmap)
-            if null newPackages && null trashPackages
-                then continuation True
-                else
-                    callCollector rebuild True True $ \ _ -> do
-                        collectorPath   <-  lift getCollectorPath
-                        newPackageInfos <-  liftIO $ mapM (loadInfosForPackage collectorPath)
-                                                            newPackages
-                        let psmap2      =   foldr ((\ e m -> Map.insert (pdPackage e) e m) . fromJust) psmap
-                                               (filter isJust newPackageInfos)
-                        let psmap3      =   foldr Map.delete psmap2 trashPackages
-                        let scope :: PackScope (Map Text [Descr])
-                                        =   foldr buildScope (PackScope Map.empty symEmpty)
-                                                (Map.elems psmap3)
-                        modifyIDE_ (\ide -> ide{systemInfo = Just (GenScopeC (addOtherToScope scope False))})
-                        continuation True
+            mbPackageIds    <-  liftIO getInstalledPackageIds'
+            case mbPackageIds of
+                Left e -> logMessage ("Please check that ghc-pkg is in your PATH and restart leksah:\n    " <> e) ErrorTag
+                Right packageIds -> do
+                    let newPackages     =   filter (`Map.member` psmap) packageIds
+                    let trashPackages   =   filter (`notElem` packageIds) (Map.keys psmap)
+                    if null newPackages && null trashPackages
+                        then continuation True
+                        else
+                            callCollector rebuild True True $ \ _ -> do
+                                collectorPath   <-  lift getCollectorPath
+                                newPackageInfos <-  liftIO $ mapM (loadInfosForPackage collectorPath)
+                                                                    newPackages
+                                let psmap2      =   foldr ((\ e m -> Map.insert (pdPackage e) e m) . fromJust) psmap
+                                                       (filter isJust newPackageInfos)
+                                let psmap3      =   foldr Map.delete psmap2 trashPackages
+                                let scope :: PackScope (Map Text [Descr])
+                                                =   foldr buildScope (PackScope Map.empty symEmpty)
+                                                        (Map.elems psmap3)
+                                modifyIDE_ (\ide -> ide{systemInfo = Just (GenScopeC (addOtherToScope scope False))})
+                                continuation True
     ideMessage Normal "Finished updating system metadata"
 
 getEmptyDefaultScope :: Map Text [Descr]
diff --git a/src/IDE/Package.hs b/src/IDE/Package.hs
--- a/src/IDE/Package.hs
+++ b/src/IDE/Package.hs
@@ -503,10 +503,10 @@
 packageTest :: PackageAction
 packageTest = do
     package <- ask
-    liftIDE $ packageTest' package True (\ _ -> return ())
+    liftIDE $ packageTest' False True package True (\ _ -> return ())
 
-packageTest' :: IDEPackage -> Bool -> (Bool -> IDEAction) -> IDEAction
-packageTest' package shallConfigure continuation =
+packageTest' :: Bool -> Bool -> IDEPackage -> Bool -> (Bool -> IDEAction) -> IDEAction
+packageTest' backgroundBuild jumpToWarnings package shallConfigure continuation =
     if "--enable-tests" `elem` ipdConfigFlags package
         then do
           logLaunch <- getDefaultLogLaunch
@@ -519,13 +519,13 @@
                     (mbLastOutput, isConfigErr, _) <- C.getZipSink $ (,,)
                         <$> C.ZipSink sinkLast
                         <*> C.ZipSink isConfigError
-                        <*> (C.ZipSink $ logOutputForBuild package False True)
+                        <*> (C.ZipSink $ logOutputForBuild package backgroundBuild jumpToWarnings)
                     lift $ do
                         errs <- readIDE errorRefs
                         if shallConfigure && isConfigErr
                             then
                                 packageConfig' package (\ b ->
-                                    when b $ packageTest' package shallConfigure continuation)
+                                    when b $ packageTest' backgroundBuild jumpToWarnings package shallConfigure continuation)
                             else do
                                 continuation (mbLastOutput == Just (ToolExit ExitSuccess))
                                 return ())
@@ -850,10 +850,12 @@
                     return ()) ideR
                 return ()
 
+-- Includes non buildable
 allBuildInfo' :: PackageDescription -> [BuildInfo]
-allBuildInfo' pkg_descr = [ libBuildInfo lib  | Just lib <- [library pkg_descr] ]
-                       ++ [ buildInfo exe     | exe <- executables pkg_descr ]
-                       ++ [ testBuildInfo tst | tst <- testSuites pkg_descr ]
+allBuildInfo' pkg_descr = [ libBuildInfo lib       | Just lib <- [library pkg_descr] ]
+                       ++ [ buildInfo exe          | exe <- executables pkg_descr ]
+                       ++ [ testBuildInfo tst      | tst <- testSuites pkg_descr ]
+                       ++ [ benchmarkBuildInfo tst | tst <- benchmarks pkg_descr ]
 testMainPath (TestSuiteExeV10 _ f) = [f]
 testMainPath _ = []
 
diff --git a/src/IDE/Pane/Files.hs b/src/IDE/Pane/Files.hs
--- a/src/IDE/Pane/Files.hs
+++ b/src/IDE/Pane/Files.hs
@@ -43,7 +43,7 @@
         treeViewNew, treeStoreNew, castToWidget, TreeStore, TreeView,
         ScrolledWindow)
 import Data.Maybe (isJust)
-import Control.Monad (void, forM_, when)
+import Control.Monad (forM, void, forM_, when)
 import Data.Typeable (Typeable)
 import IDE.Core.State
        (MessageLevel(..), ipdBuildDir, ipdPackageId, wsPackages,
@@ -71,6 +71,9 @@
 import Data.Text (Text)
 import qualified Data.Text as T (pack)
 import Data.Monoid ((<>))
+import Data.List (sortBy, sort)
+import Data.Ord (comparing)
+import Data.Char (toLower)
 
 data FileRecord =
     FileRecord FilePath
@@ -78,6 +81,14 @@
   | PackageRecord IDEPackage
   | PlaceHolder deriving(Eq)
 
+instance Ord FileRecord where
+    -- | The ordering used for displaying the records in the filetree
+    compare (DirRecord _) (FileRecord _) = LT
+    compare (FileRecord _) (DirRecord _) = GT
+    compare (FileRecord p1) (FileRecord p2) = comparing (map toLower) p1 p2
+    compare (DirRecord p1) (DirRecord p2) = comparing (map toLower) p1 p2
+    compare _ _ = LT
+
 file :: FileRecord -> Text
 file (FileRecord f) = T.pack $ takeFileName f
 file (DirRecord f) = T.pack $ takeFileName f
@@ -190,14 +201,14 @@
     liftIO $ setDirectories store Nothing $ map PackageRecord $ maybe [] wsPackages mbWS
 
 dirContents :: FilePath -> IO [FileRecord]
-dirContents dir =
-   (filter ((/= '.') . head) <$> getDirectoryContents dir >>=
-               mapM
-                 (\ f ->
-                    do let full = dir </> f
-                       isDir <- doesDirectoryExist full
-                       return $ if isDir then DirRecord full else FileRecord full))
-             `catch` \ (e :: IOError) -> return []
+dirContents dir = do
+   contents <- filter ((/= '.') . head) <$> getDirectoryContents dir
+                   `catch` \ (e :: IOError) -> return []
+   records <- forM contents $ \f -> do
+                  let full = dir </> f
+                  isDir <- doesDirectoryExist full
+                  return $ if isDir then DirRecord full else FileRecord full
+   return (sort records)
 
 refreshPackage :: TreeStore FileRecord -> TreePath -> IDEPackage -> IO ()
 refreshPackage store path p = do
diff --git a/src/IDE/Pane/Modules.hs b/src/IDE/Pane/Modules.hs
--- a/src/IDE/Pane/Modules.hs
+++ b/src/IDE/Pane/Modules.hs
@@ -56,8 +56,10 @@
 import Control.Applicative ((<$>))
 import IDE.Package (packageConfig,addModuleToPackageDescr,delModuleFromPackageDescr,getEmptyModuleTemplate,getPackageDescriptionAndPath, ModuleLocation(..))
 import Distribution.PackageDescription
-       (allBuildInfo, hsSourceDirs, hasLibs, executables, testSuites, exeName, testName,
-        benchmarks, benchmarkName)
+       (PackageDescription, BuildInfo, hsSourceDirs,
+        hasLibs, executables, testSuites, exeName, testName, benchmarks,
+        benchmarkName, libBuildInfo, library, buildInfo, testBuildInfo,
+        benchmarkBuildInfo)
 import System.FilePath (takeBaseName, (</>),dropFileName)
 import System.Directory (doesFileExist,createDirectoryIfMissing, removeFile)
 import Graphics.UI.Editor.MakeEditor (buildEditor,FieldDescription(..),mkField)
@@ -1117,13 +1119,20 @@
                                     $ map (\n -> take n treePath)  [1 .. length treePath]
     addModule categories
 
+-- Includes non buildable
+allBuildInfo' :: PackageDescription -> [BuildInfo]
+allBuildInfo' pkg_descr = [ libBuildInfo lib       | Just lib <- [library pkg_descr] ]
+                       ++ [ buildInfo exe          | exe <- executables pkg_descr ]
+                       ++ [ testBuildInfo tst      | tst <- testSuites pkg_descr ]
+                       ++ [ benchmarkBuildInfo tst | tst <- benchmarks pkg_descr ]
+
 addModule :: [ModuleRecord] -> PackageAction
 addModule categories = do
     liftIO $ debugM "leksah" "selectIdentifier"
     mbPD <- liftIDE $ getPackageDescriptionAndPath
     case mbPD of
         Nothing             -> liftIDE $ ideMessage Normal (__ "No package description")
-        Just (pd,cabalPath) -> let srcPaths = nub $ concatMap hsSourceDirs $ allBuildInfo pd
+        Just (pd,cabalPath) -> let srcPaths = nub $ concatMap hsSourceDirs $ allBuildInfo' pd
                                    rootPath = dropFileName cabalPath
                                    modPath  = foldr (\a b -> a <> "." <> b) ""
                                                 (map fst categories)
diff --git a/src/IDE/Pane/PackageEditor.hs b/src/IDE/Pane/PackageEditor.hs
--- a/src/IDE/Pane/PackageEditor.hs
+++ b/src/IDE/Pane/PackageEditor.hs
@@ -112,6 +112,8 @@
 import qualified Text.Printf as S (printf)
 import Text.Printf (PrintfType)
 import MyMissing (forceJust)
+import Language.Haskell.Extension (Language(..))
+import Distribution.License (License(..))
 
 printf :: PrintfType r => Text -> r
 printf = S.printf . T.unpack
@@ -234,7 +236,7 @@
 data NewPackage = NewPackage {
     newPackageName :: Text,
     newPackageParentDir :: FilePath,
-    templatePackage :: Text}
+    templatePackage :: Maybe Text}
 
 packageFields :: FilePath -> FieldDescription NewPackage
 packageFields workspaceDir = VFD emptyParams [
@@ -252,11 +254,11 @@
             (\ a b -> b{newPackageParentDir = a})
             (fileEditor (Just workspaceDir) FileChooserActionSelectFolder "Select"),
         mkField
-            (paraName <<<- ParaName ((__ "Existing package to copy"))
+            (paraName <<<- ParaName ((__ "Copy existing package"))
                     $ emptyParams)
             templatePackage
             (\ a b -> b{templatePackage = a})
-            (comboEntryEditor examplePackages)]
+            (maybeEditor (comboEntryEditor examplePackages, emptyParams) True "")]
 
 examplePackages = [ "hello"
                   , "gtk2hs-hello"
@@ -275,7 +277,7 @@
 #endif
     lower                      <-   dialogGetActionArea dia
     (widget,inj,ext,_)         <-   buildEditor (packageFields workspaceDir)
-                                        (NewPackage "" workspaceDir "hello")
+                                        (NewPackage "" workspaceDir Nothing)
     okButton <- dialogAddButton dia (__"Create Package") ResponseOk
     dialogAddButton dia (__"Cancel") ResponseCancel
     boxPackStart (castToBox upper) widget PackGrow 7
@@ -283,7 +285,7 @@
     widgetGrabDefault okButton
     widgetShowAll dia
     resp  <- dialogRun dia
-    value <- ext (NewPackage "" workspaceDir "hello")
+    value <- ext (NewPackage "" workspaceDir Nothing)
     widgetDestroy dia
     --find
     case resp of
@@ -296,7 +298,7 @@
     mbNewPackage <- liftIO $ newPackageDialog (head windows) workspaceDir
     case mbNewPackage of
         Nothing -> return ()
-        Just NewPackage{..} | T.null templatePackage -> do
+        Just NewPackage{..} | templatePackage == Nothing -> do
             let dirName = newPackageParentDir </> T.unpack newPackageName
             mbCabalFile <-  liftIO $ cabalFileName dirName
             window <- getMainWindow
@@ -337,25 +339,29 @@
                             package   = PackageIdentifier (PackageName $ T.unpack newPackageName)
                                                           initialVersion
                           , buildType = Just Simple
-                          , specVersionRaw = Right (orLaterVersion (Version [1,2] []))
-                          , buildDepends = [
-                                Dependency (PackageName "base") anyVersion
-                              , Dependency (PackageName "QuickCheck") anyVersion]
+                          , specVersionRaw = Right (orLaterVersion (Version [1,12] []))
+                          , license = AllRightsReserved
                           , executables = [emptyExecutable {
                                 exeName    = T.unpack newPackageName
                               , modulePath = "Main.hs"
                               , buildInfo  = emptyBuildInfo {
-                                    hsSourceDirs = ["src"]}}]
+                                    hsSourceDirs    = ["src"]
+                                  , targetBuildDepends = [Dependency (PackageName "base") anyVersion]
+                                  , defaultLanguage = Just Haskell2010}}]
                           , testSuites = [emptyTestSuite {
                                     testName = "test-" ++ T.unpack newPackageName
                                   , testInterface = (TestSuiteExeV10 (Version [1,0] []) "Main.hs")
                                   , testBuildInfo = emptyBuildInfo {
-                                        hsSourceDirs = ["src"]
-                                      , cppOptions = ["-DMAIN_FUNCTION=testMain"]}}]
+                                        hsSourceDirs    = ["test"]
+                                      , targetBuildDepends = [
+                                            Dependency (PackageName "base") anyVersion
+                                          , Dependency (PackageName "QuickCheck") anyVersion
+                                          , Dependency (PackageName "doctest") anyVersion]
+                                      , defaultLanguage = Just Haskell2010}}]
                           , benchmarks =  []
                           } dirName modules (activateAction True)
                     return ()
-        Just NewPackage{..} -> cabalUnpack newPackageParentDir templatePackage False (Just newPackageName) log (activateAction False)
+        Just NewPackage{..} -> cabalUnpack newPackageParentDir (fromJust templatePackage) False (Just newPackageName) log (activateAction False)
 
 standardSetup :: Text
 standardSetup = "#!/usr/bin/runhaskell \n"
diff --git a/src/IDE/Pane/Preferences.hs b/src/IDE/Pane/Preferences.hs
--- a/src/IDE/Pane/Preferences.hs
+++ b/src/IDE/Pane/Preferences.hs
@@ -743,8 +743,8 @@
     ,   mkFieldPP
             (paraName <<<- ParaName (__ "URL for searching documentation") $
                 paraSynopsis <<<- ParaSynopsis
-                    ("e.g Hoogle: http://www.haskell.org/hoogle/?q= or " <>
-                        "Hayoo: http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=")
+                    ("e.g https://www.haskell.org/hoogle/?q= or " <>
+                        "Hayoo: http://hayoo.fh-wedel.de/?query=")
                         $ emptyParams)
             (PP.text . show)
             stringParser
@@ -777,7 +777,7 @@
     ,   forceLineEnds       =   True
     ,   removeTBlanks       =   True
     ,   textviewFont        =   Nothing
-    ,   sourceStyle         =   (False,"classic")
+    ,   sourceStyle         =   (True,"leksah")
     ,   foundBackground     =   Color 65535 65535 32768
     ,   matchBackground     =   Color 32768 32768 32768
     ,   contextBackground   =   Color 65535 49152 49152
@@ -820,7 +820,7 @@
     ,   retrieveURL         =   "http://www.leksah.org"
     ,   retrieveStrategy    =   SP.RetrieveThenBuild
     ,   useCtrlTabFlipping  =   True
-    ,   docuSearchURL       =   "http://www.holumbus.org/hayoo/hayoo.html?query="
+    ,   docuSearchURL       =   "https://www.haskell.org/hoogle/?q="
     ,   completeRestricted  =   False
     ,   saveAllBeforeBuild  =   True
     ,   jumpToWarnings      =   True
diff --git a/src/IDE/Pane/SourceBuffer.hs b/src/IDE/Pane/SourceBuffer.hs
--- a/src/IDE/Pane/SourceBuffer.hs
+++ b/src/IDE/Pane/SourceBuffer.hs
@@ -143,6 +143,7 @@
         null, pack, unpack)
 import Data.Monoid ((<>))
 import qualified Data.Text.IO as T (writeFile, readFile)
+import Data.Time (UTCTime(..))
 
 allBuffers :: MonadIDE m => m [IDEBuffer]
 allBuffers = liftIDE getPanes
@@ -428,22 +429,31 @@
                 return False
             return ()
 
+-- | Tries to create a new text buffer, fails when the given filepath
+-- does not exist or when it is not a text file.
 newTextBuffer :: PanePath -> Text -> Maybe FilePath -> IDEM (Maybe IDEBuffer)
 newTextBuffer panePath bn mbfn = do
-    cont <- case mbfn of
-                Nothing -> return True
-                Just fn -> liftIO $ doesFileExist fn
-    if cont
-        then do
+     case mbfn of
+            Nothing -> buildPane "" Nothing
+            Just fn ->
+                do eErrorContents <- liftIO $ do
+                                         catch (Right <$> T.readFile fn)
+                                               (\e -> return $ Left (show (e :: IOError)))
+                   case eErrorContents of
+                       Right contents -> do
+                           modTime  <- liftIO $ getModificationTime fn
+                           buildPane contents (Just modTime)
+                       Left err       -> do
+                           ideMessage Normal (__ "Error reading file " <> T.pack err)
+                           return Nothing
+
+    where buildPane contents mModTime = do
             nb      <-  getNotebook panePath
             prefs   <-  readIDE prefs
             bs      <-  getCandyState
             ct      <-  readIDE candy
             (ind,rbn) <- figureOutPaneName bn 0
-            buildThisPane panePath nb (builder' bs mbfn ind bn rbn ct prefs)
-        else do
-            ideMessage Normal ((__ "File does not exist ") <> (T.pack $ fromJust mbfn))
-            return Nothing
+            buildThisPane panePath nb (builder' bs mbfn ind bn rbn ct prefs contents mModTime)
 
 data CharacterCategory = IdentifierCharacter | SpaceCharacter | SyntaxCharacter
     deriving (Eq)
@@ -461,19 +471,14 @@
     Text ->
     CandyTable ->
     Prefs ->
+    Text  ->
+    Maybe UTCTime ->
     PanePath ->
     Gtk.Notebook ->
     Gtk.Window ->
     IDEM (Maybe IDEBuffer,Connections)
-builder' bs mbfn ind bn rbn ct prefs pp nb windows = do
-    -- load up and display a file
-    (fileContents,modTime) <- case mbfn of
-        Just fn -> do
-            fc <- liftIO $ T.readFile fn
-            mt <- liftIO $ getModificationTime fn
-            return (fc,Just mt)
-        Nothing -> return ("\n",Nothing)
-
+builder' bs mbfn ind bn rbn ct prefs fileContents modTime pp nb windows = do
+    -- display a file
     case textEditorType prefs of
         "GtkSourceView" -> newGtkBuffer mbfn fileContents >>= makeBuffer modTime
         "Yi"            -> newYiBuffer mbfn fileContents >>= makeBuffer modTime
diff --git a/src/IDE/Workspaces.hs b/src/IDE/Workspaces.hs
--- a/src/IDE/Workspaces.hs
+++ b/src/IDE/Workspaces.hs
@@ -247,7 +247,7 @@
         workspaceTry $ void (workspaceAddPackage' fp)
         when isNew $ do
             mbPack <- idePackageFromPath logOutputDefault fp
-            constructAndOpenMainModule mbPack
+            constructAndOpenMainModules mbPack
         void (triggerEventIDE UpdateWorkspaceInfo))
 
 workspacePackageClone :: WorkspaceAction
@@ -259,9 +259,9 @@
         workspaceTry $ void (workspaceAddPackage' fp)
         void (triggerEventIDE UpdateWorkspaceInfo))
 
-constructAndOpenMainModule :: Maybe IDEPackage -> IDEAction
-constructAndOpenMainModule Nothing = return ()
-constructAndOpenMainModule (Just idePackage) =
+constructAndOpenMainModules :: Maybe IDEPackage -> IDEAction
+constructAndOpenMainModules Nothing = return ()
+constructAndOpenMainModules (Just idePackage) =
     forM_ (ipdMain idePackage) $ \(target, bi, isTest) -> do
         mbPD <- getPackageDescriptionAndPath
         case mbPD of
@@ -271,7 +271,7 @@
                         liftIO $ createDirectoryIfMissing True path
                         alreadyExists <- liftIO $ doesFileExist (path </> target)
                         unless alreadyExists $ do
-                            template <- liftIO $ getModuleTemplate "main" pd "Main" "" ""
+                            template <- liftIO $ getModuleTemplate (if isTest then "testmain" else "main") pd "Main" "" ""
                             liftIO $ T.writeFile (path </> target) template
                             fileOpenThis (path </> target)
                     _ -> return ()
diff --git a/win32/makeinstaller.sh b/win32/makeinstaller.sh
--- a/win32/makeinstaller.sh
+++ b/win32/makeinstaller.sh
@@ -41,8 +41,11 @@
 $LN  "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/Readme.md SourceDir/leksah
 mkdir -p SourceDir/hlint
 $LNDIR "$LEKSAH_PREFIX/$HLINT_X_X_X_X"/* SourceDir/hlint
-mkdir -p SourceDir/pretty-show
-$LNDIR "$LEKSAH_PREFIX/$PRETTY_SHOW_X_X"/style SourceDir/pretty-show
+# TODO put this back once JavaScriptCore works win mingw webkitgtk
+# mkdir -p SourceDir/pretty-show
+# $LNDIR "$LEKSAH_PREFIX/$PRETTY_SHOW_X_X"/style SourceDir/pretty-show
+mkdir -p SourceDir/pretty-show/style
+$LN "$LEKSAH_PREFIX/$PRETTY_SHOW_X_X"/style/pretty-show.css SourceDir/pretty-show/style
 mkdir -p SourceDir/ghcjs-codemirror
 $LNDIR "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/mode SourceDir/ghcjs-codemirror
 $LNDIR "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/lib SourceDir/ghcjs-codemirror
