diff --git a/HTML/extra2.html b/HTML/extra2.html
--- a/HTML/extra2.html
+++ b/HTML/extra2.html
@@ -84,6 +84,8 @@
 </pre>
 And certainly, you don't produce ()'s!
 <p>
+(Later: Even the above is wrong; discussed in <a href="http://www.fremissant.net/deepseq-bounded/deepseq-bounded.html#afterthoughts">afterthoughts</a> in the <tt>deepseq-bounded</tt> homepage.)
+<p>
 After fixing that:
 <pre>
  P  .                                227756    1769792    TA
diff --git a/Seqaid/Core.hs b/Seqaid/Core.hs
--- a/Seqaid/Core.hs
+++ b/Seqaid/Core.hs
@@ -1631,8 +1631,8 @@
   -- of elem.
 
   nubsort :: Ord a => [a] -> [a]
-  nubsort lst = ( map head . group . sort ) lst  -- O(nlogn)
---nubsort lst = nub $ sort lst                   -- O(n^2)!
+  nubsort = map head . group . sort  -- O(nlogn)
+--nubsort = nub . sort               -- O(n^2)!
 
 -------------------------------------------------------------------------------
 
diff --git a/changelog.txt b/changelog.txt
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,4 +1,8 @@
 
+0.2.0.0 -> 0.2.1.0
+ - realised I should be using Manual: True in all my .cabal flags,
+   or else the constraint solver is free to toggle them!!
+
 0.1.7.0 -> 0.2.0.0
  - deepseq-bounded had a major version bump
  - fixed cpphs missing dependency (Seqaid lib, and seqaid and seqaidpp exe's)
diff --git a/hackage-tags.txt b/hackage-tags.txt
new file mode 100644
--- /dev/null
+++ b/hackage-tags.txt
@@ -0,0 +1,14 @@
+parallel
+leak
+space
+strictness
+forcing
+diagnostic
+remedial
+auto-instrumentation
+instrumentation
+tools
+bsd3
+ghc-plugin
+program
+library
diff --git a/seqaid.cabal b/seqaid.cabal
--- a/seqaid.cabal
+++ b/seqaid.cabal
@@ -2,7 +2,7 @@
 -------------------------------------------------------------------------------
 
 name:                seqaid
-version:             0.2.0.0
+version:             0.2.1.0
 synopsis:            Dynamic strictness control, including space leak repair
 license:             BSD3
 license-file:        LICENSE
@@ -14,7 +14,7 @@
 category:            Compiler Plugin
 build-type:          Simple
 stability:           provisional, nascent
-cabal-version:       >= 1.10
+cabal-version:       >= 1.16
 
 -- NOTE: Version of GHC /must/ be >= 7.8, due to need to use TH >= 2.9.
 -- Could possibly relax to TH >= 2.8 (which would include GHC 7.6.*),
@@ -33,6 +33,7 @@
 extra-source-files:
       README
     , changelog.txt
+    , hackage-tags.txt
     , HTML/*.html
     , HTML/*.css
     , release-announcement.txt
@@ -52,73 +53,86 @@
 
 Flag HELLO_HACKAGE_VISITOR
   Description: [Note to those reading on Hackage:] Please ignore these flags, which would be better presented in a collapsed state. The flags are mostly for development purposes.
-  Default:     False
+  Default: False
+  Manual: True
 
 Flag GHC_710
   Description: (Still broken for GHC 7.10.) Until I learn how to test GHC version in the .cabal file, we need a flag, since some build-depends must be excluded completely. (CPP testing __GLASGOW_HASKELL__ is then used the rest of the way, in the source files.)
---Default:     True
-  Default:     False
+--Default: True
+  Default: False
+  Manual: True
 
 Flag TRY_INJECT_NOINLINE_ON_REQUESTED_BINDS
-  Description: If we can prevent inling of injected binds (without requiring user edits), that would probably be a good trade-off in terms of lost optimiser oppportunities in exchange for assurance that the bind won't be inlined. This didn't work, and is a poor solution anyway.
---Default:     True
-  Default:     False
+  Description: If we can prevent inlining of injected binds (without requiring user edits), that would probably be a good trade-off in terms of lost optimiser opportunities in exchange for assurance that the bind won't be inlined. This didn't work, and is a poor solution anyway.
+--Default: True
+  Default: False
+  Manual: True
 
 Flag SEQABLE_ONLY
   Description: Like NFDATAN_ONLY, but for newer Seqable module.
---Default:     True
-  Default:     False
+--Default: True
+  Default: False
+  Manual: True
 
 Flag TH_TYPE_IN_TYPES_ANN
   Description: Actually this is just preparatory, haven't gone down this road far yet. (We would like a TH.Type to Type.Type conversion function in the GHC API. Then we'd just send the list of Type.Type for direct use by the Core-plugin downstream).
---Default:     True
-  Default:     False
+--Default: True
+  Default: False
+  Manual: True
 
 Flag SEQAIDPP_TYPES
   Description: Rather than choose types to seqinj for based on the types of the top-level binds, use seqaidpp to parse the types from seqaid.config. This stays on perpetually, finally, and could be removed soon.
-  Default:     True
---Default:     False
+  Default: True
+--Default: False
+  Manual: True
 
 -- Flag ONLY_TOP_LEVEL_INJECTIONS
 --   Description: Like it says; as opposed to descending to (potentially) wrap subexpressions ... the latter which has just become possible due to seqaidpp.
--- --Default:     True
---   Default:     False
+-- --Default: True
+--   Default: False
+--   Manual: True
 
 Flag INFER_TOP_LEVEL_TYPES
   Description: If True, then TH will be used as it has been, to blanket-inject all top-level functions (at least, those not explicitly or implicitly excluded). Now, if False, only RHS's with result types in the "types" list for the module (in seqaid.config) will be wrapped (again, at least those not explicitly or implicitly excluded).
---Default:     True
-  Default:     False
+--Default: True
+  Default: False
+  Manual: True
 
 Flag DEMO_MODE
-  Description: This is the only working mode in the first release. (And it only works when tested on the "leaky" package.) The switch exists to exclude hashable/hashtables deps (and subdeps) from the first release, while I can continue to work on this aspect in the development head.
-  Default:     True
---Default:     False
+  Description: This is the only working mode so far. (And it only works when tested on the "leaky" package.) The switch exists to exclude hashable/hashtables deps (and subdeps) from the first release, while I can continue to work on this aspect in the development head.
+  Default: True
+--Default: False
+  Manual: True
 
 Flag DBG_SEQAID
-  Description: When set, every call to seqaidDispatch emits a line of info.
-  Default:     True
---Default:     False
+  Description: When set, seqaidDispatch emits status lines periodically.
+  Default: True
+--Default: False
+  Manual: True
 
 Flag NO_TOP_LEVEL_SEQINJ_DUMMIES
-  Description: If have to inject a class and instance anyway to evade DCE, no need for the old top-level seqinj_ declarations (we hope...).
---Default:     True
-  Default:     False
+  Description: If have to inject a class and instance anyway to evade DCE, no need for the old top-level seqinj_ declarations (we hope...). (But it turned out they were all still needed.)
+--Default: True
+  Default: False
+  Manual: True
 
 Flag NFDATAN_ONLY
   Description: To simplify debugging.
---Default:     True
-  Default:     False
-
--------------------------------------------------------------------------------
+--Default: True
+  Default: False
+  Manual: True
 
 -- This only applies to NFDATAN_ONLY, since NFDataP has Typeable as
 -- a superclass already. (The point is, you can set this False, and
 -- get rid of as much class/instance cruft as possible in the Core,
--- for help debugging.)
+-- to help debugging.)
 Flag SHOW_TYPE
   Description: Include Typeable instance for (show . typeOf) in seqaidDispatch
-  Default:     True
---Default:     False
+  Default: True
+--Default: False
+  Manual: True
+
+-------------------------------------------------------------------------------
 
 library {
 
