     switch (a.type)
       when 'asteroid'
         switch(b.type)
-          when 'asteroid'   then return
-          when 'bullet'     then return @que.push(type: 1, a: b.entity, b: a.entity)
-          when 'spaceship'  then return @que.push(type: 2, a: a.entity, b: b.entity)
+          when 'bullet'
+            @collisions.push(type: BulletHitAsteroid, a: b.entity, b: a.entity)
+          when 'spaceship'
+            @collisions.push(type: AsteroidHitShip, a: a.entity, b: b.entity)
       when 'bullet'
-        switch(b.type)
-          when 'asteroid'   then return @que.push(type: 1, a: a.entity, b: b.entity)
-          when 'bullet'     then return
-          when 'spaceship'  then return
+        if (b.type is 'asteroid')
+          @collisions.push(type: BulletHitAsteroid, a: a.entity, b: b.entity)
 
       when 'spaceship'
-        switch(b.type)
-          when 'asteroid'   then return @que.push(type: 2, a: b.entity, b: a.entity)
-          when 'bullet'     then return
-          when 'spaceship'  then return
+        if (b.type is 'asteroid')
+          @collisions.push(type: AsteroidHitShip, a: b.entity, b: a.entity)
     return
     ###
      * type:


class asteroids.systems.CollisionSystem extends System #implements b2ContactListener

  world           : null #  b2World
  creator         : null #  EntityCreator
  games           : null #  NodeList
  que             : null #  collision que

  constructor: (@world, @creator) ->
    @que = []
    @world.SetContactListener(this)

  update:(time) =>
    while @que.length
      contact = @que.pop()
      switch (contact.type)
        when 1 then @BulletHitAsteroid(contact.a, contact.b)
        when 2 then @AsteroidHitShip(contact.a, contact.b)
    return

  addToEngine: (engine) ->

    return # Void

  ###
   * b2ContactListener Interface
   *
   * filter the event and collisions up valid combinations
  ###
  BeginContact: (contact) =>

