care about returning head when insert_before