Bmesh data how to?

i’m building a Bmesh data for a certain shape

1 -
and I want to select a Vert index 20
and extrude it

how to use this command

bmesh.ops.extrude_vert_indiv( bm, verts = v1 )

how do I spec the Verts list for this command ?
then have to move it to a certain location
I can spec the new location with

p2 = [1 , 2 ,0]|
verts = [p2]|

there must be a better way then this !

Note: I can do it by adding new verts and making a new edge

	verts.append(bm.verts.new(( xe4 , ye4 ,0 )))			# Add vertices
	if hasattr(bm.verts, "ensure_lookup_table"):
		bm.verts.ensure_lookup_table()

	vid+= 1

	edges.append(bm.edges.new((bm.verts[vid-1], bm.verts[ed5-1])))
	if hasattr(bm.edges, "ensure_lookup_table"):
		bm.edges.ensure_lookup_table()

not most efficient but it works fine

2 - how to use the remove double with command
at end of making my new bmesh data

bmesh.ops.remove_doubles(bm, verts, dist)

this seems to delete all verts in Bmesh !

thanks
happy bl