add addAtIndex, test coverage, refactor