diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,9 @@
-User-visible changes in hledger-api.
-See also the hledger and the project change logs.
+User-visible changes in hledger-api. See also hledger, hledger-lib.
+
+
+# 1.5 (2017/12/31)
+
+* remove upper bounds on all but hledger* and base (experimental)
 
 
 # 1.4 (2017/9/30)
diff --git a/doc/hledger-api.1 b/doc/hledger-api.1
deleted file mode 100644
--- a/doc/hledger-api.1
+++ /dev/null
@@ -1,122 +0,0 @@
-
-.TH "hledger\-api" "1" "September 2017" "hledger\-api 1.4" "hledger User Manuals"
-
-
-
-.SH NAME
-.PP
-hledger\-api \- web API server for the hledger accounting tool
-.SH SYNOPSIS
-.PP
-\f[C]hledger\-api\ [OPTIONS]\f[]
-.PD 0
-.P
-.PD
-\f[C]hledger\ api\ \-\-\ [OPTIONS]\f[]
-.SH DESCRIPTION
-.PP
-hledger is a cross\-platform program for tracking money, time, or any
-other commodity, using double\-entry accounting and a simple, editable
-file format.
-hledger is inspired by and largely compatible with ledger(1).
-.PP
-hledger\-api is a simple web API server, intended to support
-client\-side web apps operating on hledger data.
-It comes with a series of simple client\-side app examples, which drive
-its evolution.
-.PP
-Like hledger, it reads data from one or more files in hledger journal,
-timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or
-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
-For more about this see hledger(1), hledger_journal(5) etc.
-.PP
-The server listens on IP address 127.0.0.1, accessible only to local
-requests, by default.
-You can change this with \f[C]\-\-host\f[], eg
-\f[C]\-\-host\ 0.0.0.0\f[] to listen on all addresses.
-Note there is no other access control, so you will need to hide
-hledger\-api behind an authenticating proxy if you want to restrict
-access.
-You can change the TCP port (default: 8001) with \f[C]\-p\ PORT\f[].
-.PP
-If invoked as \f[C]hledger\-api\ \-\-swagger\f[], instead of starting a
-server the API docs will be printed in Swagger 2.0 format.
-.SH OPTIONS
-.PP
-Note: if invoking hledger\-api as a hledger subcommand, write
-\f[C]\-\-\f[] before options as shown above.
-.TP
-.B \f[C]\-f\ \-\-file=FILE\f[]
-use a different input file.
-For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or
-\f[C]$HOME/.hledger.journal\f[])
-.RS
-.RE
-.TP
-.B \f[C]\-d\ \-\-static\-dir=DIR\f[]
-serve files from a different directory (default: \f[C]\&.\f[])
-.RS
-.RE
-.TP
-.B \f[C]\-\-host=IPADDR\f[]
-listen on this IP address (default: 127.0.0.1)
-.RS
-.RE
-.TP
-.B \f[C]\-p\ \-\-port=PORT\f[]
-listen on this TCP port (default: 8001)
-.RS
-.RE
-.TP
-.B \f[C]\-\-swagger\f[]
-print API docs in Swagger 2.0 format, and exit
-.RS
-.RE
-.TP
-.B \f[C]\-\-version\f[]
-show version
-.RS
-.RE
-.TP
-.B \f[C]\-h\ \-\-help\f[]
-show usage
-.RS
-.RE
-.SH ENVIRONMENT
-.PP
-\f[B]LEDGER_FILE\f[] The journal file path when not specified with
-\f[C]\-f\f[].
-Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps
-\f[C]C:/Users/USER/.hledger.journal\f[]).
-.SH FILES
-.PP
-Reads data from one or more files in hledger journal, timeclock,
-timedot, or CSV format specified with \f[C]\-f\f[], or
-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
-.SH BUGS
-.PP
-The need to precede options with \f[C]\-\-\f[] when invoked from hledger
-is awkward.
-
-
-.SH "REPORTING BUGS"
-Report bugs at http://bugs.hledger.org
-(or on the #hledger IRC channel or hledger mail list)
-
-.SH AUTHORS
-Simon Michael <simon@joyful.com> and contributors
-
-.SH COPYRIGHT
-
-Copyright (C) 2007-2016 Simon Michael.
-.br
-Released under GNU GPL v3 or later.
-
-.SH SEE ALSO
-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),
-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),
-ledger(1)
-
-http://hledger.org
diff --git a/doc/hledger-api.1.info b/doc/hledger-api.1.info
deleted file mode 100644
--- a/doc/hledger-api.1.info
+++ /dev/null
@@ -1,70 +0,0 @@
-This is hledger-api.1.info, produced by makeinfo version 6.0 from stdin.
-
-
-File: hledger-api.1.info,  Node: Top,  Next: OPTIONS,  Up: (dir)
-
-hledger-api(1) hledger-api 1.4
-******************************
-
-hledger-api is a simple web API server, intended to support client-side
-web apps operating on hledger data.  It comes with a series of simple
-client-side app examples, which drive its evolution.
-
-   Like hledger, it reads data from one or more files in hledger
-journal, timeclock, timedot, or CSV format specified with '-f', or
-'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
-'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),
-hledger_journal(5) etc.
-
-   The server listens on IP address 127.0.0.1, accessible only to local
-requests, by default.  You can change this with '--host', eg '--host
-0.0.0.0' to listen on all addresses.  Note there is no other access
-control, so you will need to hide hledger-api behind an authenticating
-proxy if you want to restrict access.  You can change the TCP port
-(default: 8001) with '-p PORT'.
-
-   If invoked as 'hledger-api --swagger', instead of starting a server
-the API docs will be printed in Swagger 2.0 format.
-* Menu:
-
-* OPTIONS::
-
-
-File: hledger-api.1.info,  Node: OPTIONS,  Prev: Top,  Up: Top
-
-1 OPTIONS
-*********
-
-Note: if invoking hledger-api as a hledger subcommand, write '--' before
-options as shown above.
-
-'-f --file=FILE'
-
-     use a different input file.  For stdin, use - (default:
-     '$LEDGER_FILE' or '$HOME/.hledger.journal')
-'-d --static-dir=DIR'
-
-     serve files from a different directory (default: '.')
-'--host=IPADDR'
-
-     listen on this IP address (default: 127.0.0.1)
-'-p --port=PORT'
-
-     listen on this TCP port (default: 8001)
-'--swagger'
-
-     print API docs in Swagger 2.0 format, and exit
-'--version'
-
-     show version
-'-h --help'
-
-     show usage
-
-
-Tag Table:
-Node: Top74
-Node: OPTIONS1220
-Ref: #options1307
-
-End Tag Table
diff --git a/doc/hledger-api.1.txt b/doc/hledger-api.1.txt
deleted file mode 100644
--- a/doc/hledger-api.1.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-
-hledger-api(1)               hledger User Manuals               hledger-api(1)
-
-
-
-NAME
-       hledger-api - web API server for the hledger accounting tool
-
-SYNOPSIS
-       hledger-api [OPTIONS]
-       hledger api -- [OPTIONS]
-
-DESCRIPTION
-       hledger  is  a  cross-platform program for tracking money, time, or any
-       other commodity, using double-entry accounting and a  simple,  editable
-       file  format.   hledger  is  inspired  by  and  largely compatible with
-       ledger(1).
-
-       hledger-api is a simple web API server, intended to support client-side
-       web  apps  operating on hledger data.  It comes with a series of simple
-       client-side app examples, which drive its evolution.
-
-       Like hledger, it reads data from one or more files in hledger  journal,
-       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,
-       or       $HOME/.hledger.journal       (on       windows,        perhaps
-       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),
-       hledger_journal(5) etc.
-
-       The server listens on IP address 127.0.0.1, accessible  only  to  local
-       requests,   by   default.    You   can  change  this  with  --host,  eg
-       --host 0.0.0.0 to listen on all addresses.   Note  there  is  no  other
-       access  control, so you will need to hide hledger-api behind an authen-
-       ticating proxy if you want to restrict access.  You can change the  TCP
-       port (default: 8001) with -p PORT.
-
-       If  invoked  as hledger-api --swagger, instead of starting a server the
-       API docs will be printed in Swagger 2.0 format.
-
-OPTIONS
-       Note: if invoking hledger-api as a hledger subcommand, write --  before
-       options as shown above.
-
-       -f --file=FILE
-              use  a  different  input  file.   For  stdin,  use  -  (default:
-              $LEDGER_FILE or $HOME/.hledger.journal)
-
-       -d --static-dir=DIR
-              serve files from a different directory (default: .)
-
-       --host=IPADDR
-              listen on this IP address (default: 127.0.0.1)
-
-       -p --port=PORT
-              listen on this TCP port (default: 8001)
-
-       --swagger
-              print API docs in Swagger 2.0 format, and exit
-
-       --version
-              show version
-
-       -h --help
-              show usage
-
-ENVIRONMENT
-       LEDGER_FILE The journal file path when not specified with -f.  Default:
-       ~/.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
-       C:/Users/USER/.hledger.journal).
-
-BUGS
-       The  need  to precede options with -- when invoked from hledger is awk-
-       ward.
-
-
-
-REPORTING BUGS
-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel
-       or hledger mail list)
-
-
-AUTHORS
-       Simon Michael <simon@joyful.com> and contributors
-
-
-COPYRIGHT
-       Copyright (C) 2007-2016 Simon Michael.
-       Released under GNU GPL v3 or later.
-
-
-SEE ALSO
-       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)
-
-       http://hledger.org
-
-
-
-hledger-api 1.4                 September 2017                  hledger-api(1)
diff --git a/hledger-api.1 b/hledger-api.1
new file mode 100644
--- /dev/null
+++ b/hledger-api.1
@@ -0,0 +1,122 @@
+
+.TH "hledger\-api" "1" "December 2017" "hledger\-api 1.5" "hledger User Manuals"
+
+
+
+.SH NAME
+.PP
+hledger\-api \- web API server for the hledger accounting tool
+.SH SYNOPSIS
+.PP
+\f[C]hledger\-api\ [OPTIONS]\f[]
+.PD 0
+.P
+.PD
+\f[C]hledger\ api\ \-\-\ [OPTIONS]\f[]
+.SH DESCRIPTION
+.PP
+hledger is a cross\-platform program for tracking money, time, or any
+other commodity, using double\-entry accounting and a simple, editable
+file format.
+hledger is inspired by and largely compatible with ledger(1).
+.PP
+hledger\-api is a simple web API server, intended to support
+client\-side web apps operating on hledger data.
+It comes with a series of simple client\-side app examples, which drive
+its evolution.
+.PP
+Like hledger, it reads data from one or more files in hledger journal,
+timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or
+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
+For more about this see hledger(1), hledger_journal(5) etc.
+.PP
+The server listens on IP address 127.0.0.1, accessible only to local
+requests, by default.
+You can change this with \f[C]\-\-host\f[], eg
+\f[C]\-\-host\ 0.0.0.0\f[] to listen on all addresses.
+Note there is no other access control, so you will need to hide
+hledger\-api behind an authenticating proxy if you want to restrict
+access.
+You can change the TCP port (default: 8001) with \f[C]\-p\ PORT\f[].
+.PP
+If invoked as \f[C]hledger\-api\ \-\-swagger\f[], instead of starting a
+server the API docs will be printed in Swagger 2.0 format.
+.SH OPTIONS
+.PP
+Note: if invoking hledger\-api as a hledger subcommand, write
+\f[C]\-\-\f[] before options as shown above.
+.TP
+.B \f[C]\-f\ \-\-file=FILE\f[]
+use a different input file.
+For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or
+\f[C]$HOME/.hledger.journal\f[])
+.RS
+.RE
+.TP
+.B \f[C]\-d\ \-\-static\-dir=DIR\f[]
+serve files from a different directory (default: \f[C]\&.\f[])
+.RS
+.RE
+.TP
+.B \f[C]\-\-host=IPADDR\f[]
+listen on this IP address (default: 127.0.0.1)
+.RS
+.RE
+.TP
+.B \f[C]\-p\ \-\-port=PORT\f[]
+listen on this TCP port (default: 8001)
+.RS
+.RE
+.TP
+.B \f[C]\-\-swagger\f[]
+print API docs in Swagger 2.0 format, and exit
+.RS
+.RE
+.TP
+.B \f[C]\-\-version\f[]
+show version
+.RS
+.RE
+.TP
+.B \f[C]\-h\ \-\-help\f[]
+show usage
+.RS
+.RE
+.SH ENVIRONMENT
+.PP
+\f[B]LEDGER_FILE\f[] The journal file path when not specified with
+\f[C]\-f\f[].
+Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps
+\f[C]C:/Users/USER/.hledger.journal\f[]).
+.SH FILES
+.PP
+Reads data from one or more files in hledger journal, timeclock,
+timedot, or CSV format specified with \f[C]\-f\f[], or
+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,
+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).
+.SH BUGS
+.PP
+The need to precede options with \f[C]\-\-\f[] when invoked from hledger
+is awkward.
+
+
+.SH "REPORTING BUGS"
+Report bugs at http://bugs.hledger.org
+(or on the #hledger IRC channel or hledger mail list)
+
+.SH AUTHORS
+Simon Michael <simon@joyful.com> and contributors
+
+.SH COPYRIGHT
+
+Copyright (C) 2007-2016 Simon Michael.
+.br
+Released under GNU GPL v3 or later.
+
+.SH SEE ALSO
+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),
+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),
+ledger(1)
+
+http://hledger.org
diff --git a/hledger-api.cabal b/hledger-api.cabal
--- a/hledger-api.cabal
+++ b/hledger-api.cabal
@@ -1,9 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.17.1.
+-- This file has been generated from package.yaml by hpack version 0.20.0.
 --
 -- see: https://github.com/sol/hpack
+--
+-- hash: fb76194ccf25e07379b144d9ac8eb4ae4936140b939cd8610c7c6fc6ee07f9c9
 
 name:           hledger-api
-version:        1.4
+version:        1.5
 synopsis:       Web API server for the hledger accounting tool
 description:    This is a simple web API server for hledger data.
                 It comes with a series of simple client-side web app examples.
@@ -33,9 +35,9 @@
     README
 
 data-files:
-    doc/hledger-api.1
-    doc/hledger-api.1.info
-    doc/hledger-api.1.txt
+    hledger-api.1
+    hledger-api.info
+    hledger-api.txt
 
 source-repository head
   type: git
@@ -44,26 +46,28 @@
 executable hledger-api
   main-is: hledger-api.hs
   ghc-options: -threaded
-  cpp-options: -DVERSION="1.4"
+  cpp-options: -DVERSION="1.5"
   build-depends:
-      hledger-lib >= 1.4 && < 1.5
-    , hledger >= 1.4 && < 1.5
-    , base >=4.8 && <5
+      Decimal
     , aeson
+    , base >=4.8 && <5
     , bytestring
     , containers
-    , Decimal
     , docopt
     , either
-    , microlens >=0.4 && <0.5
-    , microlens-platform >=0.2.3.1 && <0.4
+    , hledger >=1.5 && <1.6
+    , hledger-lib >=1.5 && <1.6
+    , microlens >=0.4
+    , microlens-platform >=0.2.3.1
     , safe
-    , servant-server >= 0.10
+    , servant-server >=0.10
     , servant-swagger
-    , swagger2 >= 2.0 && < 2.2
+    , swagger2 >=2.0
     , text
     , transformers
     , wai
     , wai-extra
     , warp
+  other-modules:
+      Paths_hledger_api
   default-language: Haskell2010
diff --git a/hledger-api.hs b/hledger-api.hs
--- a/hledger-api.hs
+++ b/hledger-api.hs
@@ -36,12 +36,12 @@
 import Hledger.Query
 import Hledger.Cli hiding (Reader, version)
 
-hledgerApiVersion="1.4"
+hledgerApiVersion="1.5"
 
 -- https://github.com/docopt/docopt.hs#readme
 doc :: Docopt
 doc = [docopt|
-hledger-api 1.4
+hledger-api 1.5
 
 Serves hledger data and reports as a JSON web API.
 
diff --git a/hledger-api.info b/hledger-api.info
new file mode 100644
--- /dev/null
+++ b/hledger-api.info
@@ -0,0 +1,70 @@
+This is hledger-api.info, produced by makeinfo version 6.5 from stdin.
+
+
+File: hledger-api.info,  Node: Top,  Next: OPTIONS,  Up: (dir)
+
+hledger-api(1) hledger-api 1.5
+******************************
+
+hledger-api is a simple web API server, intended to support client-side
+web apps operating on hledger data.  It comes with a series of simple
+client-side app examples, which drive its evolution.
+
+   Like hledger, it reads data from one or more files in hledger
+journal, timeclock, timedot, or CSV format specified with '-f', or
+'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps
+'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),
+hledger_journal(5) etc.
+
+   The server listens on IP address 127.0.0.1, accessible only to local
+requests, by default.  You can change this with '--host', eg '--host
+0.0.0.0' to listen on all addresses.  Note there is no other access
+control, so you will need to hide hledger-api behind an authenticating
+proxy if you want to restrict access.  You can change the TCP port
+(default: 8001) with '-p PORT'.
+
+   If invoked as 'hledger-api --swagger', instead of starting a server
+the API docs will be printed in Swagger 2.0 format.
+* Menu:
+
+* OPTIONS::
+
+
+File: hledger-api.info,  Node: OPTIONS,  Prev: Top,  Up: Top
+
+1 OPTIONS
+*********
+
+Note: if invoking hledger-api as a hledger subcommand, write '--' before
+options as shown above.
+
+'-f --file=FILE'
+
+     use a different input file.  For stdin, use - (default:
+     '$LEDGER_FILE' or '$HOME/.hledger.journal')
+'-d --static-dir=DIR'
+
+     serve files from a different directory (default: '.')
+'--host=IPADDR'
+
+     listen on this IP address (default: 127.0.0.1)
+'-p --port=PORT'
+
+     listen on this TCP port (default: 8001)
+'--swagger'
+
+     print API docs in Swagger 2.0 format, and exit
+'--version'
+
+     show version
+'-h --help'
+
+     show usage
+
+
+Tag Table:
+Node: Top72
+Node: OPTIONS1216
+Ref: #options1301
+
+End Tag Table
diff --git a/hledger-api.txt b/hledger-api.txt
new file mode 100644
--- /dev/null
+++ b/hledger-api.txt
@@ -0,0 +1,105 @@
+
+hledger-api(1)               hledger User Manuals               hledger-api(1)
+
+
+
+NAME
+       hledger-api - web API server for the hledger accounting tool
+
+SYNOPSIS
+       hledger-api [OPTIONS]
+       hledger api -- [OPTIONS]
+
+DESCRIPTION
+       hledger  is  a  cross-platform program for tracking money, time, or any
+       other commodity, using double-entry accounting and a  simple,  editable
+       file  format.   hledger  is  inspired  by  and  largely compatible with
+       ledger(1).
+
+       hledger-api is a simple web API server, intended to support client-side
+       web  apps  operating on hledger data.  It comes with a series of simple
+       client-side app examples, which drive its evolution.
+
+       Like hledger, it reads data from one or more files in hledger  journal,
+       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,
+       or       $HOME/.hledger.journal       (on       windows,        perhaps
+       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),
+       hledger_journal(5) etc.
+
+       The server listens on IP address 127.0.0.1, accessible  only  to  local
+       requests,   by   default.    You   can  change  this  with  --host,  eg
+       --host 0.0.0.0 to listen on all addresses.   Note  there  is  no  other
+       access  control, so you will need to hide hledger-api behind an authen-
+       ticating proxy if you want to restrict access.  You can change the  TCP
+       port (default: 8001) with -p PORT.
+
+       If  invoked  as hledger-api --swagger, instead of starting a server the
+       API docs will be printed in Swagger 2.0 format.
+
+OPTIONS
+       Note: if invoking hledger-api as a hledger subcommand, write --  before
+       options as shown above.
+
+       -f --file=FILE
+              use  a  different  input  file.   For  stdin,  use  -  (default:
+              $LEDGER_FILE or $HOME/.hledger.journal)
+
+       -d --static-dir=DIR
+              serve files from a different directory (default: .)
+
+       --host=IPADDR
+              listen on this IP address (default: 127.0.0.1)
+
+       -p --port=PORT
+              listen on this TCP port (default: 8001)
+
+       --swagger
+              print API docs in Swagger 2.0 format, and exit
+
+       --version
+              show version
+
+       -h --help
+              show usage
+
+ENVIRONMENT
+       LEDGER_FILE The journal file path when not specified with -f.  Default:
+       ~/.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
+       C:/Users/USER/.hledger.journal).
+
+BUGS
+       The  need  to precede options with -- when invoked from hledger is awk-
+       ward.
+
+
+
+REPORTING BUGS
+       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel
+       or hledger mail list)
+
+
+AUTHORS
+       Simon Michael <simon@joyful.com> and contributors
+
+
+COPYRIGHT
+       Copyright (C) 2007-2016 Simon Michael.
+       Released under GNU GPL v3 or later.
+
+
+SEE ALSO
+       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)
+
+       http://hledger.org
+
+
+
+hledger-api 1.5                  December 2017                  hledger-api(1)
