diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-#Fltkhs-demos
+# fltkhs-demos
 
 These are end-to-end demos of [FLTKHS] [1], a Haskell Binding to the FLTK GUI Library
 
@@ -11,9 +11,14 @@
 
 The demos shipped with this package are listed in `fltkhs-demos.cabal` as
 separate `Executable` components. Once the package is installed they are
-installed to Cabal's standard /bin/ directory (usually ~/.cabal/bin on Linux).
+installed to a location known to Stack, so to execute `fltkhs-arc` for instance
+do:
 
-Note that the executables are prefixed with \"fltkhs-\". This is in order to
+```
+> stack exec fltkhs-arc
+```
+
+Note that all the executables are prefixed with \"fltkhs-\". This is in order to
 prevent the demo executables from stomping over applications of the same name
 the user might already have installed. Typing:
 
@@ -23,12 +28,6 @@
 
 at the command line should show a complete list of available demos.
 
-Alternatively you can do:
-
-```
- > ls ~/.cabal/bin/fltkhs-*
-```
-
 ## Learning The API
 
 Most of the demos are exact ports of those shipped in the 'test' directory of
@@ -49,28 +48,21 @@
 
 ## Fast Compilation Flag
 
-This package comes with a Cabal flag `fastCompile` that is enabled by default and speeds up compilation. More information on this flag is available under the __Compilation__ section of the [FLTKHS documentation] [2].
+This package comes with a flag `fastCompile` that is enabled by default and speeds up compilation. More information on this flag is available under the __Compilation__ section of the [FLTKHS documentation] [2].
 
-To disable this flag, tell Cabal to ignore it during the `configure` step:
+To disable this flag, tell Stack to ignore it during the `configure` step:
 
 ```
-cabal configure -f-fastCompile
+stack build --flag fltkhs-demos:-fastCompile
 ```
 
 # GHCi
 
-The recommended way to running the REPL in a `fltkhs` application is `cabal repl`. For example to run the `fltkhs-arc` example do:
-
-```
-cabal repl fltkhs-arc
-```
-
-__NOTE__: For now it only works in GHC 7.8.x. GHC 7.10.x has an unfortunate regression that crashes GHCi because it cannot find symbols in the C library that contains the C++ bindings. This has been fixed in GHC 8. More information is available in the [ticket] [4].
-
-
+Please see "Running In The Repl" [5] section of the FLTKHS documentation for more information.
 
 
   [1]: http://hackage.haskell.org/package/fltkhs/
   [2]: http://hackage.haskell.org/package/fltkhs/docs/Graphics-UI-FLTK-LowLevel-FLTKHS.html
   [3]: https://github.com/deech/fltkhs-fluid-hello-world
   [4]: https://ghc.haskell.org/trac/ghc/ticket/10568
+  [5]: http://hackage.haskell.org/package/fltkhs/docs/Graphics-UI-FLTK-LowLevel-FLTKHS.html#g:14
diff --git a/fltkhs-demos.cabal b/fltkhs-demos.cabal
--- a/fltkhs-demos.cabal
+++ b/fltkhs-demos.cabal
@@ -1,5 +1,5 @@
 name: fltkhs-demos
-version: 0.0.0.3
+version: 0.0.0.5
 synopsis: FLTKHS demos. Please scroll to the bottom for more information.
 description:
   FLTKHS demos moved to a separate package to keep the core package free of additional dependencies.
@@ -27,7 +27,7 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
      base == 4.*,
-     fltkhs >= 0.4.0.0,
+     fltkhs >= 0.4.0.3,
      stm
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
@@ -35,6 +35,8 @@
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -43,14 +45,16 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    directory >= 1.2.2.0,
-    fltkhs >= 0.4.0.0
+    directory >= 1.2.1.0,
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -60,13 +64,15 @@
   Build-Depends:
     base == 4.*,
     directory,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -76,13 +82,13 @@
   Build-Depends:
     base == 4.*,
     directory,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
-  if os(windows)
-   ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -91,13 +97,13 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
-  if os(windows)
-   ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -106,13 +112,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -121,13 +129,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -136,13 +146,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -151,13 +163,13 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
-  if os(windows)
-   ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -166,13 +178,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -181,13 +195,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -196,13 +212,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -211,7 +229,7 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0,
+    fltkhs >= 0.4.0.3,
     process
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
@@ -219,6 +237,8 @@
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -227,13 +247,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
     base == 4.*,
-    fltkhs >= 0.4.0.0
+    fltkhs >= 0.4.0.3
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -242,13 +264,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
      base == 4.*,
-     fltkhs >= 0.4.0.0,bytestring
+     fltkhs >= 0.4.0.3,bytestring
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -257,13 +281,15 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
      base == 4.*,
-     fltkhs >= 0.4.0.0,bytestring
+     fltkhs >= 0.4.0.3,bytestring
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
   if impl(ghc >= 7.10) && flag(FastCompile)
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -272,7 +298,7 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
      base == 4.*,
-     fltkhs >= 0.4.0.0,
+     fltkhs >= 0.4.0.3,
      bytestring
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
@@ -280,6 +306,8 @@
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
     ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
 
@@ -288,7 +316,7 @@
   Hs-Source-Dirs: src/Examples
   Build-Depends:
      base == 4.*,
-     fltkhs >= 0.4.0.0,
+     fltkhs >= 0.4.0.3,
      bytestring
   default-language: Haskell2010
   ghc-Options: -Wall -threaded
@@ -296,5 +324,7 @@
      ghc-Options: -fno-specialise -fmax-simplifier-iterations=0 -fsimplifier-phases=0
   if os(windows)
    ghc-Options: -optl-mwindows
+  if os(darwin)
+   ghc-Options: -pgml g++ "-optl-Wl,-lfltkc"
   if !os(darwin) && !os(windows)
-    ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
+   ghc-Options: -pgml g++ "-optl-Wl,--whole-archive" "-optl-Wl,-Bstatic" "-optl-Wl,-lfltkc" "-optl-Wl,-Bdynamic" "-optl-Wl,--no-whole-archive"
diff --git a/stack-repl.yaml b/stack-repl.yaml
new file mode 100644
--- /dev/null
+++ b/stack-repl.yaml
@@ -0,0 +1,30 @@
+# For more information, see: https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md
+
+resolver: lts-2.22
+
+# Local packages, usually specified by relative directory name
+packages:
+- '.'
+
+# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
+extra-deps: []
+
+# Override default flag values for local packages and extra-deps
+flags:
+  fltkhs-demos:
+    fastcompile: true
+
+# Control whether we use the GHC we find on the path
+# system-ghc: true
+
+# Require a specific version of stack, using version ranges
+# require-stack-version: -any # Default
+# require-stack-version: >= 0.1.4.0
+
+# Override the architecture used by stack, especially useful on Windows
+# arch: i386
+# arch: x86_64
+
+# Extra directories used by stack for building
+# extra-include-dirs: [/path/to/dir]
+# extra-lib-dirs: [/path/to/dir]
diff --git a/stack-windows.yaml b/stack-windows.yaml
new file mode 100644
--- /dev/null
+++ b/stack-windows.yaml
@@ -0,0 +1,26 @@
+# For more information, see: https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md
+
+resolver: lts-3.16
+
+# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
+extra-deps: []
+
+# Override default flag values for local packages and extra-deps
+flags:
+  fltkhs-demos:
+    fastcompile: true
+
+# Control whether we use the GHC we find on the path
+# system-ghc: true
+
+# Require a specific version of stack, using version ranges
+# require-stack-version: -any # Default
+# require-stack-version: >= 0.1.4.0
+
+# Override the architecture used by stack, especially useful on Windows
+# arch: i386
+# arch: x86_64
+
+# Extra directories used by stack for building
+# extra-include-dirs: [/path/to/dir]
+# extra-lib-dirs: [/path/to/dir]
diff --git a/stack.yaml b/stack.yaml
new file mode 100644
--- /dev/null
+++ b/stack.yaml
@@ -0,0 +1,30 @@
+# For more information, see: https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md
+
+resolver: lts-5.3
+
+# Local packages, usually specified by relative directory name
+packages:
+- '.'
+
+# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
+extra-deps: []
+
+# Override default flag values for local packages and extra-deps
+flags:
+  fltkhs-demos:
+    fastcompile: true
+
+# Control whether we use the GHC we find on the path
+# system-ghc: true
+
+# Require a specific version of stack, using version ranges
+# require-stack-version: -any # Default
+# require-stack-version: >= 0.1.4.0
+
+# Override the architecture used by stack, especially useful on Windows
+# arch: i386
+# arch: x86_64
+
+# Extra directories used by stack for building
+# extra-include-dirs: [/path/to/dir]
+# extra-lib-dirs: [/path/to/dir]
