Touch up a few small things: case class constructor params are implicitly val; implicit functions should have explicit return types; reduce(_ * _) == product.