added the prevent_drift parameter