diff --git a/server/index.js b/server/index.js
index 4124138..9960b44 100644
--- a/server/index.js
+++ b/server/index.js
@@ -59,7 +59,7 @@ const createServer = (config) => {
     maxAge: '365d'
   }))
 
-  app.use(middleware(config))
+  app.use(middleware())
 
   const server = http.createServer(app)
 
@@ -86,11 +86,7 @@ const createServer = (config) => {
 const defaultServerConfig = {
   id: 1,
   port: parseInt(process.env.PORT, 10) || 5000,
-  publicDir: 'public',
-
-  // for the middleware
-  autoIndex: !process.env.DISABLE_INDEX,
-  blacklist: require('./PackageBlacklist').blacklist
+  publicDir: 'public'
 }
 
 const startServer = (serverConfig = {}) => {
diff --git a/server/middleware/checkBlacklist.js b/server/middleware/checkBlacklist.js
index 61eba20..892de53 100644
--- a/server/middleware/checkBlacklist.js
+++ b/server/middleware/checkBlacklist.js
@@ -1,13 +1,13 @@
+const blacklist = require('../PackageBlacklist').blacklist
+
 /**
  * Check the blacklist to see if we can serve files from this package.
  */
-function checkBlacklist(blacklist) {
-  return function (req, res, next) {
-    if (blacklist.includes(req.packageName)) {
-      res.status(403).send(`Package ${req.packageName} is blacklisted`)
-    } else {
-      next()
-    }
+function checkBlacklist(req, res, next) {
+  if (blacklist.includes(req.packageName)) {
+    res.status(403).send(`Package ${req.packageName} is blacklisted`)
+  } else {
+    next()
   }
 }
 
diff --git a/server/middleware/fetchPackage.js b/server/middleware/fetchPackage.js
index 9752558..ab2732c 100644
--- a/server/middleware/fetchPackage.js
+++ b/server/middleware/fetchPackage.js
@@ -5,7 +5,7 @@ const PackageURL = require('../PackageURL')
 
 /**
  * Fetch the package from the registry and store a local copy on disk.
- * Redirect if the URL does not specify an exact req.packageVersion number.
+ * Redirect if the URL does not specify an exact version number.
  */
 function fetchPackage(req, res, next) {
   PackageInfo.get(req.packageName, function (error, packageInfo) {
diff --git a/server/middleware/index.js b/server/middleware/index.js
index ffcb6a8..085e4f5 100644
--- a/server/middleware/index.js
+++ b/server/middleware/index.js
@@ -7,12 +7,7 @@ const serveFile = require('./serveFile')
 
 /**
  * Creates and returns a function that can be used in the "request"
- * event of a standard node HTTP server. Options are:
- *
- * - registryURL    The URL of the npm registry (defaults to https://registry.npmjs.org)
- * - autoIndex      Automatically generate index HTML pages for directories (defaults to true)
- *
- * Supported URL schemes are:
+ * event of a standard node HTTP server. Supported URL schemes are:
  *
  * /history@1.12.5/umd/History.min.js (recommended)
  * /history@1.12.5 (package.json's main is implied)
@@ -25,19 +20,15 @@ const serveFile = require('./serveFile')
  * /history@latest/umd/History.min.js (redirects to version)
  * /history@^1/umd/History.min.js (redirects to max satisfying version)
  */
-function createRequestHandler(options = {}) {
-  const autoIndex = options.autoIndex !== false
-  const maximumDepth = options.maximumDepth || Number.MAX_VALUE
-  const blacklist = options.blacklist || []
-
+function createRequestHandler() {
   const app = express.Router()
 
   app.use(
     parseURL,
-    checkBlacklist(blacklist),
+    checkBlacklist,
     fetchPackage,
     findFile,
-    serveFile(autoIndex, maximumDepth)
+    serveFile
   )
 
   return app
diff --git a/server/middleware/serveFile.js b/server/middleware/serveFile.js
index d1e885f..7afd7ea 100644
--- a/server/middleware/serveFile.js
+++ b/server/middleware/serveFile.js
@@ -5,6 +5,16 @@ const Metadata = require('./MetadataUtils')
 const { generateDirectoryIndexHTML } = require('./IndexUtils')
 const { getContentType } = require('./FileUtils')
 
+/**
+ * Automatically generate HTML pages that show package contents.
+ */
+const AutoIndex = !process.env.DISABLE_INDEX
+
+/**
+ * Maximum recursion depth for ?meta listings.
+ */
+const MaximumDepth = 128
+
 function sendFile(res, file, stats) {
   let contentType = getContentType(file)
 
@@ -30,38 +40,36 @@ function sendFile(res, file, stats) {
 /**
  * Send the file, JSON metadata, or HTML directory listing.
  */
-function serveFile(autoIndex, maximumDepth) {
-  return function (req, res, next) {
-    // TODO: remove support for "json" query param
-    if (req.query.meta != null || req.query.json != null) {
-      Metadata.get(req.packageDir, req.file, req.stats, maximumDepth, function (error, metadata) {
-        if (error) {
-          console.error(error)
-          res.status(500).send(`Cannot generate JSON metadata for ${req.packageSpec}${req.filename}`)
-        } else {
-          // Cache metadata for 1 year.
-          res.set('Cache-Control', 'public, max-age=31536000').send(metadata)
-        }
-      })
-    } else if (req.stats.isFile()) {
-      // Cache files for 1 year.
-      res.set('Cache-Control', 'public, max-age=31536000')
+function serveFile(req, res, next) {
+  // TODO: remove support for "json" query param
+  if (req.query.meta != null || req.query.json != null) {
+    Metadata.get(req.packageDir, req.file, req.stats, MaximumDepth, function (error, metadata) {
+      if (error) {
+        console.error(error)
+        res.status(500).send(`Cannot generate JSON metadata for ${req.packageSpec}${req.filename}`)
+      } else {
+        // Cache metadata for 1 year.
+        res.set('Cache-Control', 'public, max-age=31536000').send(metadata)
+      }
+    })
+  } else if (req.stats.isFile()) {
+    // Cache files for 1 year.
+    res.set('Cache-Control', 'public, max-age=31536000')
 
-      // TODO: use res.sendFile instead of our own sendFile?
-      sendFile(res, path.join(req.packageDir, req.file), req.stats)
-    } else if (autoIndex && req.stats.isDirectory()) {
-      generateDirectoryIndexHTML(req.packageInfo, req.packageVersion, req.packageDir, req.file, function (error, html) {
-        if (error) {
-          console.error(error)
-          res.status(500).send(`Cannot generate index page for ${req.packageSpec}${req.filename}`)
-        } else {
-          // Cache HTML directory listings for 1 minute.
-          res.set('Cache-Control', 'public, max-age=60').send(html)
-        }
-      })
-    } else {
-      res.status(403).send(`Cannot serve ${req.packageSpec}${req.filename}; it's not a file`)
-    }
+    // TODO: use res.sendFile instead of our own sendFile?
+    sendFile(res, path.join(req.packageDir, req.file), req.stats)
+  } else if (AutoIndex && req.stats.isDirectory()) {
+    generateDirectoryIndexHTML(req.packageInfo, req.packageVersion, req.packageDir, req.file, function (error, html) {
+      if (error) {
+        console.error(error)
+        res.status(500).send(`Cannot generate index page for ${req.packageSpec}${req.filename}`)
+      } else {
+        // Cache HTML directory listings for 1 minute.
+        res.set('Cache-Control', 'public, max-age=60').send(html)
+      }
+    })
+  } else {
+    res.status(403).send(`Cannot serve ${req.packageSpec}${req.filename}; it's not a file`)
   }
 }