documentation
avoid fire being called from outside, and delcare functions as var statements to avoid strict violation refering to this..