implement insert