do you really need to return `PETScVector&`?