use auto and for-range (mostly);