better fire implementation