new gradient handling way nicer