How does firehopping work?