diff --git a/Seqaid/Demo.hs b/Seqaid/Demo.hs
--- a/Seqaid/Demo.hs
+++ b/Seqaid/Demo.hs
@@ -19,23 +19,30 @@
   module Main ( main ) where
 --module Seqaid.Demo ( main ) where
 
+  import System.Environment ( getArgs )
   import System.IO.Temp
   import System.Directory
   import System.Process
+  import System.Exit
 
-  leaky_version = "0.1.0.4"
---leaky_version = "0.1.0.3"
---leaky_version = "0.1.0.0"
+  leaky_version = "0.1.0.5"  -- XXX need a better way!!....
 
+  main :: IO ExitCode
   main = do
-            tdir <- createTempDirectory "." "leaky_"
+            args <- getArgs
+            if args /= ["demo"]
+            then do
+              putStrLn "seqaid: \"seqaid demo\" is the only supported invocation at this time."
+              return $ ExitFailure 1
+            else do
+              tdir <- createTempDirectory "." "leaky_"
 -- XXX Note that "cabal get" already extracts the tarball for you.
 #if IS_WINDOWS
-            let bang_lines = ""
+              let bang_lines = ""
 #else
-            let bang_lines = "#!/bin/bash\nset -e\n"
+              let bang_lines = "#!/bin/bash\nset -e\n"
 #endif
-            let seqaid_init_bash = bang_lines ++ "\
+              let seqaid_init_bash = bang_lines ++ "\
 \cabal get leaky-" ++ leaky_version ++ "\n\
 \cd leaky-" ++ leaky_version ++ "\n\
 \cabal configure\n\
@@ -44,9 +51,15 @@
 \echo\n\
 \echo \"(Please see " ++ tdir ++ "/leaky-" ++ leaky_version ++ "/README for the interpretation.)\"\n\
 \echo\n"
-            setCurrentDirectory tdir
-            writeFile "seqaidinit.sh" seqaid_init_bash
-            p <- getPermissions "seqaidinit.sh"
-            setPermissions "seqaidinit.sh" (p { executable = True })
-            system "./seqaidinit.sh"
+              setCurrentDirectory tdir
+              writeFile "seqaidinit.sh" seqaid_init_bash
+              p <- getPermissions "seqaidinit.sh"
+              setPermissions "seqaidinit.sh" (p { executable = True })
+              st <- system "./seqaidinit.sh"
+              case st of
+                ExitSuccess -> return ExitSuccess
+                ExitFailure n -> do
+                  putStrLn $ "Sorry, seqaid demo had a problem (status=" ++ show st ++ ").\nPlease report this bug to rasfar@gmail.com"
+                  return $ ExitFailure 2
+                _ -> error $ "unexpected ExitCode = " ++ show st ++ "\nPlease report this bug to rasfar@gmail.com"
 
diff --git a/seqaid.cabal b/seqaid.cabal
--- a/seqaid.cabal
+++ b/seqaid.cabal
@@ -1,6 +1,6 @@
 
 name:                seqaid
-version:             0.1.4
+version:             0.1.5
 synopsis:            Dynamic strictness control, including space leak repair
 description:         Seqaid is a GHC plugin for non-invasive auto-instrumentation of dynamic strictness (and parallelism) control, shortly to include optimisation for automated space leak relief using minimal strictification. [The optimiser is still in development however.]
                      .
@@ -134,22 +134,23 @@
     -- for polymorphic types such as [a]. Now looking to extend
     -- the TH code to USE the GHC API, which I didn't realise
     -- was possible but see modulespec package...
-    , template-haskell <= 2.9.0.0
---  , template-haskell
-    , modulespection <= 0.1.2.1
-    , th-expand-syns <= 0.3.0.4
+    , template-haskell == 2.9.*
+    , modulespection >= 0.1.2
+    , th-expand-syns == 0.3.*
 
     -- low-level forcing libraries
-    , deepseq-bounded <= 0.5.3
+    , deepseq-bounded >= 0.5.0 && <= 0.5.3
 
     -- at least for IntMap
-    , containers <= 0.5.5.1
+    , containers == 0.5.*
     -- or would regex-posix be better?
     , regex-pcre <= 0.94.4
     -- to use regex API
-    , array <= 0.5.0.0
+    , array == 0.5.*
     -- ended up wanting this for State, for a SYB everywhereM traversal
-    , mtl <= 2.1.3.1
+    , mtl == 2.1.*
+--  , mtl == 2.1.3.*
+--  , mtl == 2.1.3.1
 
     -- In the end (although it's already a sub-dep), seqaid did end up
     -- depending directly on SOP, since now there's a splice in Seqaid.TH
@@ -158,11 +159,11 @@
     -- decls are put there by seqaidpp [indeed that was the whole reason
     -- I finally crumbed and reached for a preprocessor!] -- that's
     -- pre-TH, so pre our ability to know whether it's a synonym or not...
---  , generics-sop <= 0.1.0.4
+--  , generics-sop == 0.1.*
 
   if flag(SEQABLE_ONLY)
     build-depends:
-        generics-sop <= 0.1.0.4
+        generics-sop == 0.1.*
 
   if ! flag(DEMO_MODE)
     build-depends:
@@ -173,17 +174,18 @@
       --   primitive  : 10 modules (hashables)
       --   vector     : 19 modules (hashables)
       -- Ouch! (this only really matters for sandbox builds)
-        hashtables <= 1.2.0.1
+        hashtables == 1.2.*
       -- Need to include this anyway, since this is where "hash" function
       -- comes from (and hashtables doesn't export it).
       -- For building IntMap or HashTable keys from unique strings.
-      , hashable <= 1.2.3.0
+--    , hashable == 1.2.*
+      , hashable == 1.2.3.*
 
     -- Useful in debugging...
---  , sai-shape-syb <= 0.3.0
+--  , sai-shape-syb == 0.3.*
     -- for debugging only (though deepseq-bounded re-exports these anyhow)
---  , deepseq-generics <= 0.1.1.2
---  , deepseq <= 1.3.0.2
+--  , deepseq-generics == 0.1.1.2
+--  , deepseq == 1.3.0.2
 
   ghc-options: -optP-Wundef -fno-warn-overlapping-patterns
   ghc-options:                  -funbox-strict-fields -fwarn-tabs
@@ -262,10 +264,9 @@
 --other-extensions:
   build-depends:
       base == 4.*
---  , seqaid == 0.1.4
-    , temporary <= 1.2.0.2
-    , directory <= 1.2.1.0
-    , process <= 1.2.0.0
+    , temporary == 1.2.*
+    , directory == 1.2.*
+    , process == 1.2.*
   ghc-options:                  -funbox-strict-fields -fwarn-tabs -threaded
 --ghc-options:        -Wall -O2 -funbox-strict-fields -fwarn-tabs -threaded
 
@@ -297,9 +298,9 @@
     , regex-base <= 0.93.2
     , regex-pcre <= 0.94.4
 -- (process may still be uncommented b/c using to debug...)
-    , process <= 1.2.0.0
-    , directory <= 1.2.1.0
-    , Cabal <= 1.18.1.3
+    , process == 1.2.*
+    , directory == 1.2.*
+    , Cabal >= 1.18
 --ghc-options:
   default-language:   Haskell2010
   ghc-options: -pgmP cpphs -optP --cpp
