abstract gradients