Bullet-target interaction

I’m wondering if there is a more efficient way of creating bullets and their interaction with targets than the example below.
Bullet is created from here:

onClipEvent (enterFrame) {
 if (Key.isDown(Key.SPACE)) {
  var b = _root.attachMovie("Bullet", "Bullet", _root.getNextHighestDepth(), {_x:this._x, _y:this._y});
  b.onEnterFrame = function() {
   this._y -= 40;
  };
 }
}

The target deals with the bullet like this:

onClipEvent(enterFrame){
 if(this.hitTest(_root.Bullet)){
  removeMovieClip(_root.Bullet);
 }
}


This sample code seems simple, but when you get into multiple targets, and explosions on impact, the bullets start to go through targets, especially if the target is dynamically created… among other problems.

There must be a better way.