works for in order, random, reverse insertion