added L2 projection penalty