implementation of insertion