factor out new function balance-guarded-place