mostly finish the new array.  not tested yet
the new array passes all the tests