decoupled the shooting via events