If you are requesting multiple Jacobian blocks, Function::factory will currently call "jacobian" repeatedly, which can be quite inefficient. For example, if you have f(x, z) and you need both df/dx and df/dz, they will be calculated separately, which is probably not what the user wants. If you do want to calculate them separately, you'll probably make two separate calls to Function::factory.