Flash 8, AS2

So, this was just a goof around project at first, but now I have come up with a game idea that I like that uses it.

I've got lots of particles on the screen at once, hundreds, I have not taken the effort to count yet.

When the action gets heated, my fps drop to about 20. This isn't really that bad and it is still quite playable, but I would like to make improvements.

Things I have done so far:
1) Removed as much code from the particle enterframes as possible. They just update and check collisions if they are particles that can collide.
2) Collision checks were KILLING me so I made the stage into a grid and assigned each grid an array that stores the collidable things in that region of the stage, the particles now check what region they are in and just check collision with those objects (usually none). No hittests, just simple xy comparisons.
3) _quality = low.
4) storing PI as a root level variable, instead of recalculating it a million times
5) surprisingly, _root._width and _root._height seem really slow to check a bunch every frame. Storing them in as variable at the root level worked MUCH faster.

Things that disapointed me:
Originally my particles were tiny little 10px x 10px symbols and I figured there was a lot of overhead in redrawing the symbol.

I changed my particles to BitmapData objects on movieclips instead and expected a jump in fps, I was pretty surprised that the FPS didn't BUDGE. I get MAYBE 2-3 fps more in the worst case scenarios.

Am I missing any obvious tricks? Anyone know why the symbol - bitmap move didnt show any fps increase? I wasn't even using cacheAsBitmap before.