on("destroy",...) -> once("destroy",...) so we don't keep a reference to it, preventing gc