improved API with a builder, moved leniency to a per-movement basis