instead of having each controller registering its own listener and doing its clean its own way, shouldn't Controller based class deal with that?