swapped from Vec a a to I.Vector a