diff --git a/doc/amex-file-format.org b/doc/amex-file-format.org
deleted file mode 100644
--- a/doc/amex-file-format.org
+++ /dev/null
@@ -1,66 +0,0 @@
-Amex CSV file format
-
-Current as of December 2, 2012
-
-This documents the Amex CSV that can be downloaded from the Amex
-website. Obtain this by using the "Download" link that is available
-when viewing account transactions. Be sure to select the checkbox for
-"additional transaction details" or the like, as this format contains
-the unique Amex ID numbers.
-
-Newlines are with linefeeds only (UNIX style, not Windows style.)
-Although newlines separate records, they also appear within some of
-the fields, so you cannot split the file into records using newlines
-alone (which makes it difficult to use line-oriented tools like awk.)
-
-Here are the fields, in order. The fields are separated by commas. The
-list starts at 1 (org-mode does not seem to like starting lists at 0.)
-
-Many fields are unknown. These have always appeared blank in the data
-I have.
-
-1. Date. This is given as MM/DD/YYYY followed by a three-digit day of
-   the week, such as "Wed".
-
-2. Unknown
-
-3. Description. This is the payee name (often truncated) followed by
-   the city and state. This contains many spaces (presumably so it
-   would line up in a table?) Appears wrapped in double quotes.
-
-4. Unknown
-
-5. Unknown
-
-6. Unknown
-
-7. Unknown
-
-8. Amount. Charges appear simply with the amount; payments and credits
-   appear with a prepended minus sign. This field is not wrapped in
-   double quotes.
-
-9. Unknown
-
-10. Category. Appears to categorize the merchant (e.g. "Hardware
-    Store") but the exact format is not immediately apparent;
-    sometimes a number appears with the description, sometimes there
-    are just numbers. This field is wrapped in double quotes.
-
-11. Doing Business As. This seems to be the best place to pull the
-    payee information from, as the Description field (number 3) mixes
-    this up with other information. Double-quoted.
-
-12. Address. Contains a street address with a city and state. Looks
-    something like Street Address (newline) City (newline) State
-    2-digit. Note the embedded newlines. Double-quoted.
-
-13. Postcode. Postal code, then newline, then country. Note the
-    embedded newline. Double-quoted.
-
-14. Amex ID. A long integer. Appears within both double quotes and
-    single quotes, e.g. "'320123300342679128'".
-
-15. Unknown
-
-16. Unknown
diff --git a/doc/amex-workflow.org b/doc/amex-workflow.org
deleted file mode 100644
--- a/doc/amex-workflow.org
+++ /dev/null
@@ -1,68 +0,0 @@
-Amex Workflow
-
-Here is a proposed workflow for dealing with the download of Amex
-transactions and the reconciliation of Amex statements.
-
-* Import to database using amex-import
-
-This will parse downloaded data from the Amex website and import them
-to the database of all Amex transactions and will assign all
-transactions a "U-number." The U-number is a unique number that
-identifies an Amex transaction. U-numbers are used because, although
-Amex assigns unique identifiers to transactions, they are extremely
-long.
-
-* Merge from database to ledger file using amex-merge
-
-Checks to ensure that every transaction that is in the Amex database
-is represented in the ledger. Follows these steps:
-
-- Is the database transaction's U-number found in the numbers for the
-  Amex transactions that are in the ledger? If so, stop.
-
-- Otherwise, go through existing Amex ledger transactions that do not
-  have a U-number and see if any of these match the database
-  transaction. There is a match if all of the following are true:
-
-  - The quantities match exactly;
-
-  - The ledger transaction is a debit or a credit, as appropriate (if
-    Amex shows an increase in the balance, then the ledger shows a
-    credit; for payments, the ledger shows a debit.)
-
-  - The date on the Amex transaction matches the local date on the
-    ledger transaction.
-
-- If no matches are found, create a transaction and append it to the
-  end of the list of Ledger transactions. Assign the appropriate
-  U-number. Prints new ledger file to stdout.
-
-After running amex-merge, study the results. If necessary, assign the
-U-numbers to already existing ledger transactions, or edit the newly
-created transactions.
-
-* Clear using amex-clear
-
-This command will also work with a list of downloaded transactions. It
-will follow these steps:
-
-- Make sure that all the downloaded transactions are in the
-  database. If not, quit with an error.
-
-- Make sure that all the downloaded transaction U-numbers are also in
-  the list of ledger transactions. If not, quit with an error.
-
-- Make sure that each ledger posting corresponding to the downloaded
-  transaction has no flag for the posting itself (a flag for the
-  transaction is OK.) It one has a flag, quit with an error.
-
-- Assign the flag "C" to each transaction. Prints new ledger file to stdout.
-
-After running amex-clear, make sure that the balance of all cleared
-and reconciled ledger Amex postings is the same as the Amex statement
-balance.
-
-* Reconcile using amex-reconcile
-
-This command simply changes the "C" flags in the Amex ledger account
-to "R" flags.
diff --git a/doc/bofa-file-format.org b/doc/bofa-file-format.org
deleted file mode 100644
--- a/doc/bofa-file-format.org
+++ /dev/null
@@ -1,159 +0,0 @@
-Bank of America download file format
-
-This is the format for the "WEB Connect for Quicken 2010 and above"
-option that is on the Bank of America download format. Ostensibly this
-is OFX in SGML, but I don't know if this is actually true as I have
-not yet found much about what "WEB Connect" is. A simple CSV would be
-preferable; however, B of A does not make unique transaction IDs
-available in CSV format. (QIF does not have this information, neither
-does the "Microsoft Excel format" on the website, which appears to
-just be a CSV.)
-
-The file has DOS line endings (\r\n).
-
-Unlike XML, tags are not always closed. The tag names are always in
-all caps. It does appear that tags that open alone on a line are
-balanced, while tags that are followed on the same line with data are
-not balanced.
-
-* Header
-
-There is a header portion with nine lines. Each has the field name,
-followed by a colon, and then some information (no space between the
-colon and the data). They have field names as follows:
-
-- OFXHEADER
-- DATA
-- VERSION
-- SECURITY
-- ENCODING
-- CHARSET
-- COMPRESSION
-- OLDFILEUID
-- NEWFILEUID
-
-Then there is a blank line.
-
-* OFX tag
-This tag is balanced. It encloses all the data. All other tags are
-within this tag.
-
-* SIGNONMSGSRSV1
-Sign on message? Balanced. Encloses some tags:
-
-** SONRS
-Balanced.
-
-*** STATUS
-Balanced.
-
-**** CODE
-Not balanced. There is a digit on the same line.
-
-**** SEVERITY
-Not balanced. Says "INFO" on the same line.
-
-*** DTSERVER
-Not balanced. Has some sort of date-time information?
-
-*** LANGUAGE
-Not balanced. Says ENG.
-
-*** DTACCTUP
-Not balanced. Has some date-time information. Looks like same
-information in DTSERVER.
-
-*** FI
-Balanced. Financial institution?
-
-**** ORG
-Not balanced. Bank of America.
-
-**** FID
-Not balanced. Says 5959.
-
-*** INTU.BID
-Not balanced. Four-digit number.
-
-*** INTU.USERID
-Not balanced. Has your Bank of America user ID.
-
-* BANKMSGSRSV1
-Balanced.
-
-** STMTTRNRS
-Balanced.
-
-*** TRNUID
-Not balanced. "0"
-
-*** STATUS
-Balanced.
-
-**** CODE
-Not balanced. "0"
-
-**** SEVERITY
-Not balanced. "INFO"
-
-*** STMTRS
-Balanced.
-
-**** CURDEF
-Not balanced. "USD"
-
-**** BANKACCTFROM
-Balanced.
-
-***** BANKID
-Not Balanced. Digits.
-
-***** ACCTID
-Not balanced. Digits.
-
-***** ACCTTYPE
-Not balanced. Checking
-
-**** BANKTRANLIST
-Balanced.
-
-***** DTSTART
-Not balanced. Digits. Some sort of date-time.
-
-***** DTEND
-Not balanced. Digits. Some sort of date-time.
-
-***** STMTTRN
-Balanced. Where interesting stuff starts.
-
-****** TRNTYPE
-Not balanced. Transaction Type? Mostly CREDIT or DEBIT in the data I
-have, though it might also be ATM or who knows what else.
-
-****** DTPOSTED
-Not balanced. A date-time. I am guessing the format for a date-time is
-YYYYMMDDHHMMSS. B of A is leaving the MMSS as zeroes.
-
-****** TRNAMT
-Not balanced. Digits with a decimal point. CREDIT transactions have no
-minus sign; DEBIT transactions have a leading minus sign.
-
-****** FITID
-Not balanced. Financial Institution ID? Digits with some points and
-maybe a minus.
-
-****** NAME
-Not balanced. The payee name.
-
-****** CHECKNUM
-Appears on checks. Not balanced.
-
-**** LEDGERBAL
-Balanced.
-
-***** BALAMT
-Not balanced. An amount.
-
-***** DTASOF
-Not balanced. Date as of? A date-time. Unlike the others, this
-date-time has minutes and seconds.
diff --git a/doc/penny-ofx.ini b/doc/penny-ofx.ini
deleted file mode 100644
--- a/doc/penny-ofx.ini
+++ /dev/null
@@ -1,70 +0,0 @@
-# Sample configuration file for penny-ofx
-
-# Optional default financial institution account. If you do not
-# specify a default account, penny-ofx will require that you specify
-# one using the -f option every time you run penny-ofx.
-default_fit_acct = bigbank
-
-# Example: a credit card from Bigbank. All of the fields shown are
-# required. You can configure multiple financial institution accounts.
-[bigbank]
-
-# File in which to store database information for this account. You
-# must use a different file for each account. Therefore, be careful if
-# you cut and paste when you create new accounts in this file, as you
-# must change the filename here.
-file = /home/massysett/ledger/bigbank.bin
-
-# Postings from this account appear under this account in your ledger
-# file(s).
-penny_acct = Liabilities:Current:Bigbank
-
-# When penny-fit finds a financial institution posting and it
-# does not have a matching posting in your ledger, it must create
-# a new transaction with two postings. One posting will be in the
-# pennyAcct specified above and the other posting will be in this
-# account.
-default_acct = Expenses:Unclassified
-
-# All postings will be in this currency
-currency = $
-
-# The next two options control digit grouping when penny-ofx reprints
-# your ledger. groupLeft and groupRight control whether digits are
-# grouped to the left and to the right of the radix point,
-# respectively. Available choices are:
-#
-# none - do not group any digits
-#
-# large - group only if the number to be grouped is greater than 9,999
-# (if grouping to the left of the decimal point) or if there are more
-# than 4 decimal places (if grouping to the right of the decimal
-# point.)
-#
-# all - group whenever there are at least four digits to be grouped.
-group_left = all
-group_right = none
-
-# Postings from your financial institution are specified in terms of
-# increases or decreases. Postings in your ledger are specified in
-# terms of debits or credits. The translator specifies how to convert
-# a posting from your financial institution to a posting in the
-# pennyAcct in your ledger.
-increase_is = Credit
-
-# When penny-fit creates new postings it must put the commodity
-# either to the left of the quantity or to the right of the
-# quantity.
-commodity_on = Left
-
-# When penny-fit creates new postings it must decide whether to
-# put a space between the commodity and the quantity.
-space_between = False
-
-# Give some helpful information here about where to find the file on
-# your bank website. You can use multiline strings, as shown, by
-# indenting subsequent lines.
-more_info = Statements from bigbank.
-  Bigbank makes its statements available by clicking on
-  "Account Info", then logging in, then clicking on
-  "Statements".
diff --git a/install-docs b/install-docs
--- a/install-docs
+++ b/install-docs
@@ -20,7 +20,7 @@
     done
 
     install -m755 -d $DOCDIR
-    for filename in doc/*.{org,dot}; do
+    for filename in doc/*.{org,dot,hs}; do
         install -v -m644 $filename $DOCDIR
     done
 
diff --git a/man/penny-fit.7 b/man/penny-fit.7
--- a/man/penny-fit.7
+++ b/man/penny-fit.7
@@ -188,6 +188,7 @@
 decrease:IncreaseIsCredit:credit:No
 .TE
 .
+.P
 If
 .B penny-fit
 finds a match for a financial institution posting in this way, then it
diff --git a/man/penny-reconcile.1 b/man/penny-reconcile.1
--- a/man/penny-reconcile.1
+++ b/man/penny-reconcile.1
@@ -14,7 +14,10 @@
 .IR C .
 Changes those flags to the letter
 .I R
-and prints the resulting ledger to standard output. This is useful
+and prints the resulting ledger to standard output.
+.
+.P
+This is useful
 when reconciling a financial institution account: you may first mark
 postings in your ledger that match a posting on your bank statement
 with a
@@ -32,6 +35,7 @@
 .B penny-reconcile
 will automatically mark all the posts reconciled.
 .
+.P
 If no
 .IR FILE ", or " FILE " is " - ,
 read standard input.
@@ -72,6 +76,7 @@
 This would happen only rarely though, so you might
 be just fine using a query-replace function in your text editor.
 .
+.P
 Also,
 .B penny-reconcile
 will tidy up your ledger file--that is, it might rearrange or delete
diff --git a/penny-bin.cabal b/penny-bin.cabal
--- a/penny-bin.cabal
+++ b/penny-bin.cabal
@@ -1,5 +1,5 @@
 Name: penny-bin
-Version: 0.14.0.0
+Version: 0.16.0.2
 Cabal-version: >=1.8
 Build-Type: Simple
 License: BSD3
@@ -173,7 +173,6 @@
   , README
   , doc/*.org
   , doc/*.dot
-  , doc/*.ini
   , doc/*.hs
   , examples/*.pny
   , man/*.1
@@ -187,7 +186,7 @@
 Executable penny
   Build-depends:
     base ==4.*,
-    penny-lib ==0.14.*
+    penny-lib ==0.16.*
 
   Main-is: penny-main.hs
   Other-modules: Paths_penny_bin
@@ -201,7 +200,7 @@
 Executable penny-selloff
   Build-depends:
     base == 4.*,
-    penny-lib ==0.14.*,
+    penny-lib ==0.16.*,
     explicit-exception ==0.1.*,
     containers ==0.5.*,
     semigroups ==0.9.*,
@@ -221,7 +220,7 @@
 Executable penny-diff
   Build-depends:
     base ==4.*,
-    penny-lib ==0.14.*,
+    penny-lib ==0.16.*,
     text ==0.11.*,
     multiarg ==0.16.*,
     explicit-exception == 0.1.*
@@ -239,7 +238,7 @@
   Build-depends:
       base ==4.*
     , multiarg ==0.16.*
-    , penny-lib ==0.14.*
+    , penny-lib ==0.16.*
     , pretty-show ==1.5.*
     , text ==0.11.*
 
@@ -252,7 +251,7 @@
 Executable penny-reconcile
   Build-depends:
       base ==4.*
-    , penny-lib ==0.14.*
+    , penny-lib ==0.16.*
     , text ==0.11.*
     , multiarg ==0.16.*
     , explicit-exception ==0.1.*
diff --git a/penny-main.hs b/penny-main.hs
--- a/penny-main.hs
+++ b/penny-main.hs
@@ -238,16 +238,16 @@
 lightEvenTextSpec = id
 
 lightOddTextSpec :: Chunk -> Chunk
-lightOddTextSpec = id .+. color8_b_default .+. color256_b_255
+lightOddTextSpec = (<> (c8_b_default <> c256_b_255))
 
 lightDebit :: (Chunk -> Chunk) -> Chunk -> Chunk
-lightDebit f = f .+. color8_f_magenta .+. color256_f_52
+lightDebit f c = f c <> c8_f_magenta <> c256_f_52
 
 lightCredit :: (Chunk -> Chunk) -> Chunk -> Chunk
-lightCredit f = f .+. color8_f_cyan .+. color256_f_21
+lightCredit f c = f c <> c8_f_cyan <> c256_f_21
 
 lightZero :: (Chunk -> Chunk) -> Chunk -> Chunk
-lightZero f = f .+. color8_f_black .+. color256_f_0
+lightZero f c = f c <> c8_f_black <> c256_f_0
 
 -- | The dark color scheme. You can change various values below to
 -- affect the color scheme.
@@ -271,16 +271,16 @@
 darkEvenTextSpec = id
 
 darkOddTextSpec :: Chunk -> Chunk
-darkOddTextSpec = id .+. color8_b_default .+. color256_b_235
+darkOddTextSpec = (<> (c8_b_default <> c256_b_235))
 
 darkDebit :: (Chunk -> Chunk) -> Chunk -> Chunk
-darkDebit f = f .+. color8_f_magenta .+. color256_f_208
+darkDebit f c = f c <> c8_f_magenta <> c256_f_208
 
 darkCredit :: (Chunk -> Chunk) -> Chunk -> Chunk
-darkCredit f = f .+. color8_f_cyan .+. color256_f_45
+darkCredit f c = f c <> c8_f_cyan <> c256_f_45
 
 darkZero :: (Chunk -> Chunk) -> Chunk -> Chunk
-darkZero f = f .+. color8_f_white .+. color256_f_15
+darkZero f c = f c <> c8_f_white <> c256_f_15
 
 
 -- | Plain scheme has no colors at all.
