left and right, first pass