passing storing references to things should be the last option. Its memory expensive and performance heavy. Every time you create a reference to something you are declaring that same amount of space in memory , again. Not good O.O.P. Obviously there are some cases when there is no other choice. The event phase in as3 is wonderful. It gives us the ability to have events propagate all the way to the top of our applications , virtually for free. And unless you are popping off hundred of events at a time , there is no performance hit.