variable, gradient changing functions