move gradients to optional mixin