Refactored Fire() and fixed a bug