refactored tempo estimator