This can be optimised for no doubt, adversarial training is like that