@grisotti: This algorithm