updated bulletFired method to use abstract factory