diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,19 @@
 See also the hledger and project change logs.
 
 
+# 1.4 (2017/9/30)
+
+* a @FILE argument reads flags & args from FILE, one per line
+
+* enable --pivot and --anon options, like hledger CLI (#474) (Jakub Zárybnický)
+
+* accept -NUM as a shortcut for --depth NUM
+
+* deps: allow ansi-terminal 0.7
+
+* deps: drop oldtime flag, require time 1.5+
+
+
 # 1.3.1 (2017/8/25)
 
 * allow megaparsec 6 (#594, Simon Michael, Hans-Peter Deifel)
diff --git a/Hledger/UI/AccountsScreen.hs b/Hledger/UI/AccountsScreen.hs
--- a/Hledger/UI/AccountsScreen.hs
+++ b/Hledger/UI/AccountsScreen.hs
@@ -29,7 +29,8 @@
 import System.FilePath (takeFileName)
 
 import Hledger
-import Hledger.Cli hiding (progname,prognameandversion,green)
+import Hledger.Cli hiding (progname,prognameandversion)
+import Hledger.Cli.Commands.Add (add)
 import Hledger.UI.UIOptions
 import Hledger.UI.UITypes
 import Hledger.UI.UIState
@@ -184,7 +185,7 @@
           <+> str "/"
           <+> total
           <+> str ")"
-          <+> (if ignore_assertions_ copts
+          <+> (if ignore_assertions_ $ inputopts_ copts
                then withAttr (borderAttr <> "query") (str " ignoring balance assertions")
                else str "")
           where
diff --git a/Hledger/UI/ErrorScreen.hs b/Hledger/UI/ErrorScreen.hs
--- a/Hledger/UI/ErrorScreen.hs
+++ b/Hledger/UI/ErrorScreen.hs
@@ -19,7 +19,7 @@
 import Graphics.Vty (Event(..),Key(..))
 import Text.Megaparsec.Compat
 
-import Hledger.Cli hiding (progname,prognameandversion,green)
+import Hledger.Cli hiding (progname,prognameandversion)
 import Hledger.UI.UIOptions
 import Hledger.UI.UITypes
 import Hledger.UI.UIState
@@ -151,7 +151,7 @@
 -- are disabled, do nothing.
 uiCheckBalanceAssertions :: Day -> UIState -> UIState
 uiCheckBalanceAssertions d ui@UIState{aopts=UIOpts{cliopts_=copts}, ajournal=j}
-  | ignore_assertions_ copts = ui
+  | ignore_assertions_ $ inputopts_ copts = ui
   | otherwise =
     case journalCheckBalanceAssertions j of
       Right _  -> ui
diff --git a/Hledger/UI/Main.hs b/Hledger/UI/Main.hs
--- a/Hledger/UI/Main.hs
+++ b/Hledger/UI/Main.hs
@@ -40,7 +40,7 @@
 #endif
 
 import Hledger
-import Hledger.Cli hiding (progname,prognameandversion,green)
+import Hledger.Cli hiding (progname,prognameandversion)
 import Hledger.UI.UIOptions
 import Hledger.UI.UITypes
 import Hledger.UI.UIState (toggleHistorical)
@@ -66,10 +66,7 @@
   run opts
     where
       run opts
-        | "h"               `inRawOpts` (rawopts_ $ cliopts_ opts) = putStr (showModeUsage uimode) >> exitSuccess
-        | "help"            `inRawOpts` (rawopts_ $ cliopts_ opts) = printHelpForTopic (topicForMode uimode) >> exitSuccess
-        | "man"             `inRawOpts` (rawopts_ $ cliopts_ opts) = runManForTopic (topicForMode uimode) >> exitSuccess
-        | "info"            `inRawOpts` (rawopts_ $ cliopts_ opts) = runInfoForTopic (topicForMode uimode) >> exitSuccess
+        | "help"            `inRawOpts` (rawopts_ $ cliopts_ opts) = putStr (showModeUsage uimode) >> exitSuccess
         | "version"         `inRawOpts` (rawopts_ $ cliopts_ opts) = putStrLn prognameandversion >> exitSuccess
         | "binary-filename" `inRawOpts` (rawopts_ $ cliopts_ opts) = putStrLn (binaryfilename progname)
         | otherwise                                                = withJournalDoUICommand opts runBrickUi
@@ -77,10 +74,13 @@
 -- XXX withJournalDo specialised for UIOpts
 withJournalDoUICommand :: UIOpts -> (UIOpts -> Journal -> IO ()) -> IO ()
 withJournalDoUICommand uopts@UIOpts{cliopts_=copts} cmd = do
-  rulespath <- rulesFilePathFromOpts copts
   journalpath <- journalFilePathFromOpts copts
-  ej <- readJournalFiles Nothing rulespath (not $ ignore_assertions_ copts) journalpath
-  either error' (cmd uopts . journalApplyAliases (aliasesFromOpts copts)) ej
+  ej <- readJournalFilesWithOpts (inputopts_ copts) journalpath
+  let fn = cmd uopts .
+           pivotByOpts copts .
+           anonymiseByOpts copts .
+           journalApplyAliases (aliasesFromOpts copts)
+  either error' fn ej
 
 runBrickUi :: UIOpts -> Journal -> IO ()
 runBrickUi uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}} j = do
diff --git a/Hledger/UI/RegisterScreen.hs b/Hledger/UI/RegisterScreen.hs
--- a/Hledger/UI/RegisterScreen.hs
+++ b/Hledger/UI/RegisterScreen.hs
@@ -30,7 +30,7 @@
 
 
 import Hledger
-import Hledger.Cli hiding (progname,prognameandversion,green)
+import Hledger.Cli hiding (progname,prognameandversion)
 import Hledger.UI.UIOptions
 -- import Hledger.UI.Theme
 import Hledger.UI.UITypes
@@ -199,7 +199,7 @@
           <+> str "/"
           <+> total
           <+> str ")"
-          <+> (if ignore_assertions_ copts then withAttr (borderAttr <> "query") (str " ignoring balance assertions") else str "")
+          <+> (if ignore_assertions_ $ inputopts_ copts then withAttr (borderAttr <> "query") (str " ignoring balance assertions") else str "")
           where
             togglefilters =
               case concat [
diff --git a/Hledger/UI/TransactionScreen.hs b/Hledger/UI/TransactionScreen.hs
--- a/Hledger/UI/TransactionScreen.hs
+++ b/Hledger/UI/TransactionScreen.hs
@@ -20,7 +20,7 @@
 import Brick.Widgets.Border (borderAttr)
 
 import Hledger
-import Hledger.Cli hiding (progname,prognameandversion,green)
+import Hledger.Cli hiding (progname,prognameandversion)
 import Hledger.UI.UIOptions
 -- import Hledger.UI.Theme
 import Hledger.UI.UITypes
@@ -74,7 +74,7 @@
           <+> togglefilters
           <+> borderQueryStr (query_ ropts)
           <+> str (" in "++T.unpack (replaceHiddenAccountsNameWith "All" acct)++")")
-          <+> (if ignore_assertions_ copts then withAttr (borderAttr <> "query") (str " ignoring balance assertions") else str "")
+          <+> (if ignore_assertions_ $ inputopts_ copts then withAttr (borderAttr <> "query") (str " ignoring balance assertions") else str "")
           where
             togglefilters =
               case concat [
diff --git a/Hledger/UI/UIOptions.hs b/Hledger/UI/UIOptions.hs
--- a/Hledger/UI/UIOptions.hs
+++ b/Hledger/UI/UIOptions.hs
@@ -10,6 +10,7 @@
 import Data.Functor.Compat ((<$>))
 #endif
 import Data.List (intercalate)
+import System.Environment
 
 import Hledger.Cli hiding (progname,version,prognameandversion)
 import Hledger.UI.Theme (themeNames)
@@ -94,6 +95,12 @@
       Just t | not $ elem t themeNames -> Left $ "invalid theme name: "++t
       _                                -> Right ()
 
+-- XXX some refactoring seems due
 getHledgerUIOpts :: IO UIOpts
-getHledgerUIOpts = processArgs uimode >>= return . decodeRawOpts >>= rawOptsToUIOpts
+--getHledgerUIOpts = processArgs uimode >>= return . decodeRawOpts >>= rawOptsToUIOpts
+getHledgerUIOpts = do
+  args <- getArgs >>= expandArgsAt
+  let args' = replaceNumericFlags args 
+  let cmdargopts = either usageError id $ process uimode args'
+  rawOptsToUIOpts $ decodeRawOpts cmdargopts 
 
diff --git a/Hledger/UI/UIState.hs b/Hledger/UI/UIState.hs
--- a/Hledger/UI/UIState.hs
+++ b/Hledger/UI/UIState.hs
@@ -133,8 +133,8 @@
 
 -- | Toggle the ignoring of balance assertions.
 toggleIgnoreBalanceAssertions :: UIState -> UIState
-toggleIgnoreBalanceAssertions ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{}}} =
-  ui{aopts=uopts{cliopts_=copts{ignore_assertions_=not $ ignore_assertions_ copts}}}
+toggleIgnoreBalanceAssertions ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{inputopts_=iopts}}} =
+  ui{aopts=uopts{cliopts_=copts{inputopts_=iopts{ignore_assertions_=not $ ignore_assertions_ iopts}}}}
 
 -- | Step through larger report periods, up to all.
 growReportPeriod :: Day -> UIState -> UIState
diff --git a/Hledger/UI/UIUtils.hs b/Hledger/UI/UIUtils.hs
--- a/Hledger/UI/UIUtils.hs
+++ b/Hledger/UI/UIUtils.hs
@@ -58,8 +58,8 @@
                   ,renderKey ("A", "add transaction (hledger-iadd)")
                   ,renderKey ("E", "open editor")
                   ,renderKey ("I", "toggle balance assertions")
-                  ,renderKey ("g", "reload data")
                   ,renderKey ("CTRL-l", "redraw & recenter")
+                  ,renderKey ("g", "reload data")
                   ,renderKey ("q", "quit")
                   ,str " "
                   ,str "MANUAL"
diff --git a/doc/hledger-ui.1 b/doc/hledger-ui.1
--- a/doc/hledger-ui.1
+++ b/doc/hledger-ui.1
@@ -1,5 +1,5 @@
 
-.TH "hledger\-ui" "1" "August 2017" "hledger\-ui 1.3.1" "hledger User Manuals"
+.TH "hledger\-ui" "1" "September 2017" "hledger\-ui 1.4" "hledger User Manuals"
 
 
 
@@ -88,8 +88,8 @@
 .RS
 .RE
 .TP
-.B \f[C]\-\-pivot\ TAGNAME\f[]
-use some other field/tag for account names
+.B \f[C]\-\-pivot\ FIELDNAME\f[]
+use some other field or tag for the account name
 .RS
 .RE
 .TP
@@ -142,7 +142,7 @@
 .RE
 .TP
 .B \f[C]\-\-date2\f[]
-show, and match with \-b/\-e/\-p/date:, secondary dates instead
+match the secondary date instead (see command help for other effects)
 .RS
 .RE
 .TP
@@ -166,8 +166,8 @@
 .RS
 .RE
 .TP
-.B \f[C]\-\-depth=N\f[]
-hide accounts/postings deeper than N
+.B \f[C]\-NUM\ \-\-depth=NUM\f[]
+hide/aggregate accounts or postings more than NUM levels deep
 .RS
 .RE
 .TP
@@ -188,29 +188,18 @@
 .RS
 .RE
 .PP
+When a reporting option appears more than once in the command line, the
+last one takes precedence.
+.PP
+Some reporting options can also be written as query arguments.
+.PP
 hledger help options:
 .TP
-.B \f[C]\-h\f[]
+.B \f[C]\-h\ \-\-help\f[]
 show general usage (or after COMMAND, command usage)
 .RS
 .RE
 .TP
-.B \f[C]\-\-help\f[]
-show this program\[aq]s manual as plain text (or after an add\-on
-COMMAND, the add\-on\[aq]s manual)
-.RS
-.RE
-.TP
-.B \f[C]\-\-man\f[]
-show this program\[aq]s manual with man
-.RS
-.RE
-.TP
-.B \f[C]\-\-info\f[]
-show this program\[aq]s manual with info
-.RS
-.RE
-.TP
 .B \f[C]\-\-version\f[]
 show version
 .RS
@@ -220,6 +209,10 @@
 show debug output (levels 1\-9, default: 1)
 .RS
 .RE
+.PP
+A \@FILE argument will be expanded to the contents of FILE, which should
+contain one command line option/argument per line.
+(To prevent this, insert a \f[C]\-\-\f[] argument before.)
 .SH KEYS
 .PP
 \f[C]?\f[] shows a help dialog listing all keys.
diff --git a/doc/hledger-ui.1.info b/doc/hledger-ui.1.info
--- a/doc/hledger-ui.1.info
+++ b/doc/hledger-ui.1.info
@@ -3,8 +3,8 @@
 
 File: hledger-ui.1.info,  Node: Top,  Next: OPTIONS,  Up: (dir)
 
-hledger-ui(1) hledger-ui 1.3.1
-******************************
+hledger-ui(1) hledger-ui 1.4
+****************************
 
 hledger-ui is hledger's curses-style interface, providing an efficient
 full-window text UI for viewing accounts and transactions, and some
@@ -67,9 +67,9 @@
 '--anon'
 
      anonymize accounts and payees
-'--pivot TAGNAME'
+'--pivot FIELDNAME'
 
-     use some other field/tag for account names
+     use some other field or tag for the account name
 '-I --ignore-assertions'
 
      ignore any failing balance assertions
@@ -103,7 +103,8 @@
      (overrides the flags above)
 '--date2'
 
-     show, and match with -b/-e/-p/date:, secondary dates instead
+     match the secondary date instead (see command help for other
+     effects)
 '-U --unmarked'
 
      include only unmarked postings/txns (can combine with -P or -C)
@@ -116,9 +117,9 @@
 '-R --real'
 
      include only non-virtual postings
-'--depth=N'
+'-NUM --depth=NUM'
 
-     hide accounts/postings deeper than N
+     hide/aggregate accounts or postings more than NUM levels deep
 '-E --empty'
 
      show items with zero amount, normally hidden
@@ -131,21 +132,16 @@
      convert amounts to their market value on the report end date (using
      the most recent applicable market price, if any)
 
-   hledger help options:
-
-'-h'
+   When a reporting option appears more than once in the command line,
+the last one takes precedence.
 
-     show general usage (or after COMMAND, command usage)
-'--help'
+   Some reporting options can also be written as query arguments.
 
-     show this program's manual as plain text (or after an add-on
-     COMMAND, the add-on's manual)
-'--man'
+   hledger help options:
 
-     show this program's manual with man
-'--info'
+'-h --help'
 
-     show this program's manual with info
+     show general usage (or after COMMAND, command usage)
 '--version'
 
      show version
@@ -153,6 +149,10 @@
 
      show debug output (levels 1-9, default: 1)
 
+   A @FILE argument will be expanded to the contents of FILE, which
+should contain one command line option/argument per line.  (To prevent
+this, insert a '--' argument before.)
+
 
 File: hledger-ui.1.info,  Node: KEYS,  Next: SCREENS,  Prev: OPTIONS,  Up: Top
 
@@ -365,19 +365,19 @@
 
 Tag Table:
 Node: Top73
-Node: OPTIONS829
-Ref: #options928
-Node: KEYS3669
-Ref: #keys3766
-Node: SCREENS6562
-Ref: #screens6649
-Node: Accounts screen6739
-Ref: #accounts-screen6869
-Node: Register screen9099
-Ref: #register-screen9256
-Node: Transaction screen11330
-Ref: #transaction-screen11490
-Node: Error screen12360
-Ref: #error-screen12484
+Node: OPTIONS825
+Ref: #options924
+Node: KEYS3861
+Ref: #keys3958
+Node: SCREENS6754
+Ref: #screens6841
+Node: Accounts screen6931
+Ref: #accounts-screen7061
+Node: Register screen9291
+Ref: #register-screen9448
+Node: Transaction screen11522
+Ref: #transaction-screen11682
+Node: Error screen12552
+Ref: #error-screen12676
 
 End Tag Table
diff --git a/doc/hledger-ui.1.txt b/doc/hledger-ui.1.txt
--- a/doc/hledger-ui.1.txt
+++ b/doc/hledger-ui.1.txt
@@ -65,8 +65,8 @@
 
        --anon anonymize accounts and payees
 
-       --pivot TAGNAME
-              use some other field/tag for account names
+       --pivot FIELDNAME
+              use some other field or tag for the account name
 
        -I --ignore-assertions
               ignore any failing balance assertions
@@ -99,7 +99,8 @@
               (overrides the flags above)
 
        --date2
-              show, and match with -b/-e/-p/date:, secondary dates instead
+              match the secondary date instead (see  command  help  for  other
+              effects)
 
        -U --unmarked
               include only unmarked postings/txns (can combine with -P or -C)
@@ -113,30 +114,29 @@
        -R --real
               include only non-virtual postings
 
-       --depth=N
-              hide accounts/postings deeper than N
+       -NUM --depth=NUM
+              hide/aggregate accounts or postings more than NUM levels deep
 
        -E --empty
               show items with zero amount, normally hidden
 
        -B --cost
-              convert amounts to their cost at  transaction  time  (using  the
+              convert  amounts  to  their  cost at transaction time (using the
               transaction price, if any)
 
        -V --value
-              convert  amounts  to  their  market value on the report end date
+              convert amounts to their market value on  the  report  end  date
               (using the most recent applicable market price, if any)
 
-       hledger help options:
-
-       -h     show general usage (or after COMMAND, command usage)
+       When a reporting option appears more than once in the command line, the
+       last one takes precedence.
 
-       --help show this program's manual as plain text  (or  after  an  add-on
-              COMMAND, the add-on's manual)
+       Some reporting options can also be written as query arguments.
 
-       --man  show this program's manual with man
+       hledger help options:
 
-       --info show this program's manual with info
+       -h --help
+              show general usage (or after COMMAND, command usage)
 
        --version
               show version
@@ -144,57 +144,61 @@
        --debug[=N]
               show debug output (levels 1-9, default: 1)
 
+       A @FILE argument will be expanded to the contents of FILE, which should
+       contain  one  command line option/argument per line.  (To prevent this,
+       insert a -- argument before.)
+
 KEYS
-       ?  shows a help dialog listing all keys.  (Some of these also appear in
+       ? shows a help dialog listing all keys.  (Some of these also appear  in
        the quick help at the bottom of each screen.) Press ? again (or ESCAPE,
        or LEFT) to close it.  The following keys work on most screens:
 
        The cursor keys navigate: right (or enter) goes deeper, left returns to
-       the previous screen,  up/down/page up/page down/home/end  move  up  and
-       down    through    lists.     Vi-style    (h/j/k/l)   and   Emacs-style
+       the  previous  screen,  up/down/page up/page down/home/end  move up and
+       down   through   lists.     Vi-style    (h/j/k/l)    and    Emacs-style
        (CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported.  A tip:
-       movement  speed is limited by your keyboard repeat rate, to move faster
-       you may want to adjust it.  (If you're on a mac, the Karabiner  app  is
+       movement speed is limited by your keyboard repeat rate, to move  faster
+       you  may  want to adjust it.  (If you're on a mac, the Karabiner app is
        one way to do that.)
 
-       With  shift pressed, the cursor keys adjust the report period, limiting
-       the  transactions  to  be  shown   (by   default,   all   are   shown).
-       shift-down/up  steps  downward and upward through these standard report
+       With shift pressed, the cursor keys adjust the report period,  limiting
+       the   transactions   to   be   shown   (by  default,  all  are  shown).
+       shift-down/up steps downward and upward through these  standard  report
        period   durations:   year,   quarter,   month,   week,   day.    Then,
-       shift-left/right  moves to the previous/next period.  t sets the report
-       period to today.  With the --watch option,  when  viewing  a  "current"
-       period  (the  current  day,  week, month, quarter, or year), the period
-       will move automatically to track the current date.  To set a  non-stan-
+       shift-left/right moves to the previous/next period.  t sets the  report
+       period  to  today.   With  the --watch option, when viewing a "current"
+       period (the current day, week, month, quarter,  or  year),  the  period
+       will  move automatically to track the current date.  To set a non-stan-
        dard period, you can use / and a date: query.
 
-       /  lets  you  set a general filter query limiting the data shown, using
-       the same query terms as in hledger and hledger-web.  While editing  the
-       query,  you  can  use CTRL-a/e/d/k, BS, cursor keys; press ENTER to set
+       / lets you set a general filter query limiting the  data  shown,  using
+       the  same query terms as in hledger and hledger-web.  While editing the
+       query, you can use CTRL-a/e/d/k, BS, cursor keys; press  ENTER  to  set
        it, or ESCAPEto cancel.  There are also keys for quickly adjusting some
-       common  filters  like account depth and transaction status (see below).
+       common filters like account depth and transaction status  (see  below).
        BACKSPACE or DELETE removes all filters, showing all transactions.
 
-       ESCAPE removes all filters and jumps back to the top  screen.   Or,  it
+       ESCAPE  removes  all  filters and jumps back to the top screen.  Or, it
        cancels a minibuffer edit or help dialog in progress.
 
        CTRL-l redraws the screen and centers the selection if possible (selec-
-       tions near the top won't be centered, since we don't scroll  above  the
+       tions  near  the top won't be centered, since we don't scroll above the
        top).
 
-       g  reloads from the data file(s) and updates the current screen and any
-       previous screens.  (With large files, this  could  cause  a  noticeable
+       g reloads from the data file(s) and updates the current screen and  any
+       previous  screens.   (With  large  files, this could cause a noticeable
        pause.)
 
-       I  toggles  balance  assertion  checking.  Disabling balance assertions
+       I toggles balance assertion  checking.   Disabling  balance  assertions
        temporarily can be useful for troubleshooting.
 
-       a runs command-line hledger's add  command,  and  reloads  the  updated
+       a  runs  command-line  hledger's  add  command, and reloads the updated
        file.  This allows some basic data entry.
 
-       E   runs   $HLEDGER_UI_EDITOR,   or   $EDITOR,   or  a  default  (emac-
+       E  runs  $HLEDGER_UI_EDITOR,  or   $EDITOR,   or   a   default   (emac-
        sclient -a "" -nw) on the journal file.  With some editors (emacs, vi),
-       the  cursor  will be positioned at the current transaction when invoked
-       from the register and transaction screens, and at  the  error  location
+       the cursor will be positioned at the current transaction  when  invoked
+       from  the  register  and transaction screens, and at the error location
        (if possible) when invoked from the error screen.
 
        q quits the application.
@@ -203,44 +207,44 @@
 
 SCREENS
    Accounts screen
-       This  is  normally  the  first screen displayed.  It lists accounts and
-       their balances, like hledger's balance command.  By default,  it  shows
-       all  accounts  and their latest ending balances (including the balances
-       of subaccounts).  if you specify a query on the command line, it  shows
+       This is normally the first screen displayed.   It  lists  accounts  and
+       their  balances,  like hledger's balance command.  By default, it shows
+       all accounts and their latest ending balances (including  the  balances
+       of  subaccounts).  if you specify a query on the command line, it shows
        just the matched accounts and the balances from matched transactions.
 
-       Account  names are normally indented to show the hierarchy (tree mode).
+       Account names are normally indented to show the hierarchy (tree  mode).
        To see less detail, set a depth limit by pressing a number key, 1 to 9.
        0 shows even less detail, collapsing all accounts to a single total.  -
-       and + (or =) decrease and increase the  depth  limit.   To  remove  the
-       depth  limit,  set  it  higher than the maximum account depth, or press
+       and  +  (or  =)  decrease  and increase the depth limit.  To remove the
+       depth limit, set it higher than the maximum  account  depth,  or  press
        ESCAPE.
 
-       F toggles flat mode, in which accounts are shown as a flat  list,  with
-       their  full names.  In this mode, account balances exclude subaccounts,
-       except for accounts at the depth limit (as with hledger's balance  com-
+       F  toggles  flat mode, in which accounts are shown as a flat list, with
+       their full names.  In this mode, account balances exclude  subaccounts,
+       except  for accounts at the depth limit (as with hledger's balance com-
        mand).
 
        H toggles between showing historical balances or period balances.  His-
-       torical balances (the default) are ending balances at the  end  of  the
-       report  period,  taking  into account all transactions before that date
-       (filtered by the filter query if any),  including  transactions  before
-       the  start  of  the report period.  In other words, historical balances
-       are what you would see on a bank statement  for  that  account  (unless
-       disturbed  by  a  filter  query).   Period balances ignore transactions
+       torical  balances  (the  default) are ending balances at the end of the
+       report period, taking into account all transactions  before  that  date
+       (filtered  by  the  filter query if any), including transactions before
+       the start of the report period.  In other  words,  historical  balances
+       are  what  you  would  see on a bank statement for that account (unless
+       disturbed by a filter  query).   Period  balances  ignore  transactions
        before the report start date, so they show the change in balance during
        the report period.  They are more useful eg when viewing a time log.
 
        U toggles filtering by unmarked status, including or excluding unmarked
        postings in the balances.  Similarly, P toggles pending postings, and C
-       toggles  cleared postings.  (By default, balances include all postings;
-       if you activate one or two status  filters,  only  those  postings  are
+       toggles cleared postings.  (By default, balances include all  postings;
+       if  you  activate  one  or  two status filters, only those postings are
        included; and if you activate all three, the filter is removed.)
 
        R toggles real mode, in which virtual postings are ignored.
 
-       Z  toggles  nonzero  mode, in which only accounts with nonzero balances
-       are shown (hledger-ui shows zero items by default, unlike  command-line
+       Z toggles nonzero mode, in which only accounts  with  nonzero  balances
+       are  shown (hledger-ui shows zero items by default, unlike command-line
        hledger).
 
        Press right or enter to view an account's transactions register.
@@ -249,65 +253,65 @@
        This screen shows the transactions affecting a particular account, like
        a check register.  Each line represents one transaction and shows:
 
-       o the other account(s) involved, in abbreviated form.   (If  there  are
-         both  real  and virtual postings, it shows only the accounts affected
+       o the  other  account(s)  involved, in abbreviated form.  (If there are
+         both real and virtual postings, it shows only the  accounts  affected
          by real postings.)
 
-       o the overall change to the current account's balance; positive for  an
+       o the  overall change to the current account's balance; positive for an
          inflow to this account, negative for an outflow.
 
        o the running historical total or period total for the current account,
-         after the transaction.  This can be toggled with H.  Similar  to  the
-         accounts  screen,  the  historical  total is affected by transactions
-         (filtered by the filter query) before the report  start  date,  while
+         after  the  transaction.  This can be toggled with H.  Similar to the
+         accounts screen, the historical total  is  affected  by  transactions
+         (filtered  by  the  filter query) before the report start date, while
          the period total is not.  If the historical total is not disturbed by
-         a filter query, it will be the running historical balance  you  would
+         a  filter  query, it will be the running historical balance you would
          see on a bank register for the current account.
 
-       If  the  accounts  screen  was  in  tree mode, the register screen will
+       If the accounts screen was in  tree  mode,  the  register  screen  will
        include transactions from both the current account and its subaccounts.
-       If  the  accounts  screen  was  in  flat  mode, and a non-depth-clipped
-       account was selected, the register  screen  will  exclude  transactions
+       If the accounts screen  was  in  flat  mode,  and  a  non-depth-clipped
+       account  was  selected,  the  register screen will exclude transactions
        from subaccounts.  In other words, the register always shows the trans-
-       actions responsible for  the  period  balance  shown  on  the  accounts
+       actions  responsible  for  the  period  balance  shown  on the accounts
        screen.  As on the accounts screen, this can be toggled with F.
 
-       U  toggles  filtering  by  unmarked  status, showing or hiding unmarked
+       U toggles filtering by unmarked  status,  showing  or  hiding  unmarked
        transactions.  Similarly, P toggles pending transactions, and C toggles
-       cleared  transactions.  (By default, transactions with all statuses are
-       shown; if you activate one or two status filters, only  those  transac-
-       tions  are  shown;  and  if  you  activate  all  three,  the  filter is
+       cleared transactions.  (By default, transactions with all statuses  are
+       shown;  if  you activate one or two status filters, only those transac-
+       tions are  shown;  and  if  you  activate  all  three,  the  filter  is
        removed.)q
 
        R toggles real mode, in which virtual postings are ignored.
 
-       Z toggles nonzero mode, in which only transactions  posting  a  nonzero
-       change  are  shown (hledger-ui shows zero items by default, unlike com-
+       Z  toggles  nonzero  mode, in which only transactions posting a nonzero
+       change are shown (hledger-ui shows zero items by default,  unlike  com-
        mand-line hledger).
 
        Press right (or enter) to view the selected transaction in detail.
 
    Transaction screen
-       This screen shows a single transaction, as  a  general  journal  entry,
-       similar  to  hledger's  print command and journal format (hledger_jour-
+       This  screen  shows  a  single transaction, as a general journal entry,
+       similar to hledger's print command and  journal  format  (hledger_jour-
        nal(5)).
 
-       The transaction's date(s)  and  any  cleared  flag,  transaction  code,
-       description,  comments,  along  with  all  of  its account postings are
-       shown.  Simple transactions have two postings, but there  can  be  more
+       The  transaction's  date(s)  and  any  cleared  flag, transaction code,
+       description, comments, along with  all  of  its  account  postings  are
+       shown.   Simple  transactions  have two postings, but there can be more
        (or in certain cases, fewer).
 
-       up  and  down will step through all transactions listed in the previous
-       account register screen.  In the title bar, the numbers in  parentheses
-       show  your  position  within  that  account  register.   They will vary
+       up and down will step through all transactions listed in  the  previous
+       account  register screen.  In the title bar, the numbers in parentheses
+       show your position  within  that  account  register.   They  will  vary
        depending on which account register you came from (remember most trans-
        actions appear in multiple account registers).  The #N number preceding
        them is the transaction's position within the complete unfiltered jour-
        nal, which is a more stable id (at least until the next reload).
 
    Error screen
-       This  screen  will appear if there is a problem, such as a parse error,
-       when you press g to reload.  Once you have fixed the problem,  press  g
+       This screen will appear if there is a problem, such as a  parse  error,
+       when  you  press g to reload.  Once you have fixed the problem, press g
        again to reload and resume normal operation.  (Or, you can press escape
        to cancel the reload attempt.)
 
@@ -315,17 +319,17 @@
        COLUMNS The screen width to use.  Default: the full terminal width.
 
        LEDGER_FILE The journal file path when not specified with -f.  Default:
-       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-
+       ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour-
        nal).
 
 FILES
-       Reads data from one or more files in hledger journal, timeclock,  time-
-       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or
-       $HOME/.hledger.journal          (on          windows,           perhaps
+       Reads  data from one or more files in hledger journal, timeclock, time-
+       dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or
+       $HOME/.hledger.journal           (on          windows,          perhaps
        C:/Users/USER/.hledger.journal).
 
 BUGS
-       The  need  to precede options with -- when invoked from hledger is awk-
+       The need to precede options with -- when invoked from hledger  is  awk-
        ward.
 
        -f- doesn't work (hledger-ui can't read from stdin).
@@ -333,13 +337,13 @@
        -V affects only the accounts screen.
 
        When you press g, the current and all previous screens are regenerated,
-       which  may cause a noticeable pause with large files.  Also there is no
+       which may cause a noticeable pause with large files.  Also there is  no
        visual indication that this is in progress.
 
-       --watch is not yet fully robust.  It works well for normal  usage,  but
-       many  file  changes  in  a  short time (eg saving the file thousands of
-       times with an editor macro) can cause problems at least on OSX.   Symp-
-       toms  include:  unresponsive UI, periodic resetting of the cursor posi-
+       --watch  is  not yet fully robust.  It works well for normal usage, but
+       many file changes in a short time (eg  saving  the  file  thousands  of
+       times  with an editor macro) can cause problems at least on OSX.  Symp-
+       toms include: unresponsive UI, periodic resetting of the  cursor  posi-
        tion, momentary display of parse errors, high CPU usage eventually sub-
        siding, and possibly a small but persistent build-up of CPU usage until
        the program is restarted.
@@ -347,7 +351,7 @@
 
 
 REPORTING BUGS
-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel
+       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel
        or hledger mail list)
 
 
@@ -361,7 +365,7 @@
 
 
 SEE ALSO
-       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),
+       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),
        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
        dot(5), ledger(1)
 
@@ -369,4 +373,4 @@
 
 
 
-hledger-ui 1.3.1                  August 2017                    hledger-ui(1)
+hledger-ui 1.4                  September 2017                   hledger-ui(1)
diff --git a/hledger-ui.cabal b/hledger-ui.cabal
--- a/hledger-ui.cabal
+++ b/hledger-ui.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hledger-ui
-version:        1.3.1
+version:        1.4
 synopsis:       Curses-style user interface for the hledger accounting tool
 description:    This is hledger's curses-style interface.
                 It is simpler and more convenient for browsing data than the command-line interface,
@@ -40,11 +40,6 @@
   type: git
   location: https://github.com/simonmichael/hledger
 
-flag oldtime
-  description: If building with time < 1.5, also depend on old-locale. Set automatically by cabal.
-  manual: False
-  default: False
-
 flag threaded
   description: Build with support for multithreaded execution
   manual: False
@@ -55,11 +50,11 @@
   hs-source-dirs:
       ./.
   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans
-  cpp-options: -DVERSION="1.3.1"
+  cpp-options: -DVERSION="1.4"
   build-depends:
-      hledger >= 1.3.1 && < 1.4
-    , hledger-lib >= 1.3.1 && < 1.4
-    , ansi-terminal >= 0.6.2.3 && < 0.7
+      hledger >= 1.4 && < 1.5
+    , hledger-lib >= 1.4 && < 1.5
+    , ansi-terminal >= 0.6.2.3 && < 0.8
     , async
     , base >= 4.8 && < 5
     , base-compat >= 0.8.1
@@ -79,6 +74,7 @@
     , split >= 0.1 && < 0.3
     , text >= 1.2 && < 1.3
     , text-zipper >= 0.4 && < 0.11
+    , time >= 1.5
     , transformers
     , vector
   if os(windows)
@@ -89,13 +85,6 @@
       , vty >= 5.5 && < 5.18
   if flag(threaded)
     ghc-options: -threaded
-  if flag(oldtime)
-    build-depends:
-        time < 1.5
-      , old-locale
-  else
-    build-depends:
-        time >= 1.5
   other-modules:
       Hledger.UI
       Hledger.UI.AccountsScreen
