refactors balloon behavior