@jordansissel, `cipher.decrypt` sets the 'function' for the cipher. The key used depends on the `username` in the UDP payload and it (could) change for every packet (call to `decode`).

There's no sense in creating a new cipher object for every packet we get imho. Hence, we create the object at start-up and set its settings when needed.

So after every decrypt we clear the state of the cipher object, because adding a new key raises an exception.