abstract gradient