covariancia introduced in Gate.outgoing, it works but I don't know why :)
Implement co- and contravariancia on the whole system.