updated insert function