better event binding and notifications