Build a closure to hold the non-changing quantities to avoid recursing with a bunch of parameters that are always the same.
Much nicer code.