diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -61,29 +61,35 @@
 > &nbsp;&nbsp;&nbsp;&nbsp;**repeat**&nbsp;*r*&nbsp;**times**  
 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**for**&nbsp;*i*&nbsp;**in**&nbsp;0..255  
 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*j*&nbsp;&#8592;&nbsp;(*j*&nbsp;+&nbsp;*S*[*i*]&nbsp;+&nbsp;*k*[*i*&nbsp;**mod**&nbsp;*l*])&nbsp;**mod**&nbsp;256  
-> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*S*[*i*]&nbsp;<->&nbsp;*S*[*j*]  
+> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*S*[*i*]&nbsp;&#8596;&nbsp;*S*[*j*]  
 > &nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Finally,&nbsp;produce&nbsp;the&nbsp;stream.  
 > &nbsp;&nbsp;&nbsp;&nbsp;*keystream*&nbsp;&#8592;&nbsp;zero-based array of&nbsp;*n*&nbsp;bytes  
 > &nbsp;&nbsp;&nbsp;&nbsp;*j*&nbsp;&#8592;&nbsp;0  
 > &nbsp;&nbsp;&nbsp;&nbsp;**for**&nbsp;*i*&nbsp;**in**&nbsp;0..n-1  
-> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i'&nbsp;&#8592;&nbsp;*(i + 1)*&nbsp;**mod**&nbsp;256  
+> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i'&nbsp;&#8592;&nbsp;(*i*&nbsp;+&nbsp;1)&nbsp;**mod**&nbsp;256  
 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*j*&nbsp;&#8592;&nbsp;(*j*&nbsp;+&nbsp;*S*[i'])&nbsp;**mod**&nbsp;256  
-> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*S*[i']&nbsp;<->&nbsp;*S*[*j*]  
+> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*S*[i']&nbsp;&#8596;&nbsp;*S*[*j*]  
 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*keystream*[*i*]&nbsp;&#8592;&nbsp;*S*[(*S*[i']&nbsp;+&nbsp;*S*[*j*])&nbsp;**mod**&nbsp;256]  
 > &nbsp;&nbsp;&nbsp;&nbsp;**return**&nbsp;*keystream*  
 
 <!-- End of pseuf translation of rc4.pseu -->
 
+
 CS2 encryption requires a plaintext message (treated as a
-bytestream), a key with a recommended maximum size of 53
-bytes and a required maximum size of 256 bytes, and an
-"initial value"
+bytestream), a key, and an "initial value"
 ([IV](http://en.wikipedia.org/wiki/Initialization_vector))
-of 10 bytes. The IV is a
+of 10 bytes. The key *should* be no more than 53 bytes, to
+ensure good mixing during key scheduling.
+
+The IV is a
 [nonce](http://en.wikipedia.org/wiki/Cryptographic_nonce)
 that must be different for each message sent: it should be
 chosen randomly if possible, but may be chosen
 pseudo-randomly or even just counted if necessary.
+CS2 appends the IV to the CS2 key to produce an RC4 key.
+RC4 uses only the first 256 RC4 key bytes. Thus, the CS2 key
+*must* be no more than 246 bytes: a longer CS2 key would
+cause some or all of the IV to not be used by RC4.
 
 <!-- This pseudocode translated from encrypt.pseu by pseuf -->
 
@@ -134,8 +140,32 @@
 ## Driver
 
 The program `cs2` uses the `CipherSaber2` library to encrypt
-or decrypt `stdin` to `stdout`. Say "`cs2 --help`" for usage
-information.
+or decrypt `stdin` to `stdout`.
+
+`cs2` is written in Haskell, so you will need a Haskell
+installation to run it. It depends on the package
+`[parseargs](http://hackage.haskell.org/package/parseargs)`
+from [Hackage](http://hackage.haskell.org), as well as the
+`bytestring` package that should probably have come with
+your distribution but may need to be installed. Say "`cabal
+install parseargs`" and "`cabal install bytestring`" to get
+things set up. (This in turn may require a `cabal-install`
+package from your Linux distribution or thereabouts.)
+
+Say "`runghc cs2.hs --help`" for usage information.
+
+Say "`runghc cs2.hs -e whee <f.txt >g.cs2`" to encrypt the
+file `f.txt` with key `whee`. An IV will be automatically
+chosen.
+
+Say "`runghc cs2.hs -d whee <g.cs2 >ff.txt`" to decrypt the
+file `g.cs2` with key `whee`.
+
+## Test Instances
+
+The `test` directory include a bunch of plaintext/ciphertext
+pairs taken from the original CS2 materials. Please see
+`README.md` in that directory for more information.
 
 ## License
 
diff --git a/ciphersaber2.cabal b/ciphersaber2.cabal
--- a/ciphersaber2.cabal
+++ b/ciphersaber2.cabal
@@ -14,7 +14,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:             0.1.1.0
+version:             0.1.1.1
 
 -- A short (one-line) description of the package.
 synopsis:            Implementation of CipherSaber2 RC4 cryptography.
@@ -61,7 +61,7 @@
 source-repository this
   type:     git
   location: http://github.com/BartMassey/ciphersaber2
-  tag:      v0.1.1.0
+  tag:      v0.1.1.1
 
 library
   -- Modules exported by the library.
@@ -74,8 +74,8 @@
   -- other-extensions:    
   
   -- Other library packages from which modules are imported.
-  build-depends:       base >=4.7 && <5,
-                       array >=0.5 && <1,
+  build-depends:       base >=4 && <5,
+                       array >=0.4 && <1,
                        bytestring >= 0.10 && < 1
   
   -- Directories containing source files.
@@ -91,8 +91,8 @@
   other-modules: Data.CipherSaber2
 
   -- Other library packages from which modules are imported.
-  build-depends:       base >=4.7 && <5,
-                       array >=0.5 && <1,
+  build-depends:       base >=4 && <5,
+                       array >=0.4 && <1,
                        parseargs >= 0.1 && < 1,
                        bytestring >= 0.10 && < 1
 
