add non-in-place & test1