clean up interfaces and use slicing for insert/append