The way I do inheritance in node is like this:

```js
var inherits = require('util').inherits

function AppError() {
  Boom.call(this)
}
inherits(AppError, Boom)
```

That gets you all of the "instance" properties i.e. `Boom.prototype`. For the stuff directly on `Boom` like `notFound` you need to copy them to `AppError` separately... lame. And in this case `AppError.notFound('bar') instanceof AppError` is false... lame. JS inheritance can be shitty. Luckily you don't really need it.

Its actually fine to add to Boom, no kittens will be harmed, but I understand the hesitance. If you want to keep Boom pure I recommend doing something like this:

```js
var errors = {}
var props = Object.keys(Boom)
for (var i = 0; i < props.length; i++) {
  errors[props[i]] = Boom[props[i]]
}

errors.wrap = function ...
errors.accountExists = function ...

return errors
```

There's no temptation to call `new` on `errors` and mess things up and no inheritance. It's just a bunch of functions that return Booms.