decouple offercast and free apps logic, they're independent