improved exceptions
use off method to unregister an event or handler