A dynamic holding method to avoid bus bunching on high-frequency transit routes: from theory to practice