best gradient injection + more functions