add at beginning of your mod
local paramsutil = require "yo_paramsutil"

if you use the default paramsutil you don't have to require them both. yo_paramsutil just adds some functions to the default paramsutil

usually a complex construction is like this:

...
function data()

return {
...
	params={
		makeAParam(),
		makeAnotherParam(),
		makeTrackTypeParam(),
		makeCatenaryParam()
	}
...
	updateFn= function(params)
		...
		result.edgeLists = {
			{
				type = "TRACK",
				params = {
					type = trackTypes[params.trackType+1],
					catenary = params.catenary == 1
				},
				edges = tracks,
				snapNodes = snaps
			}
		}
		...
	end
}



change it like this:



...
function data()
	local localparams={}
	localparams[#localparams+1]=makeAParam()
	localparams[#localparams+1]=makeAnotherParam()
	paramsutil.paramTrackType(localparams) -- this one is different that the others
--	paramsutil.paramTrackType(localparams,"trackType2","Secondary track type") -- alternate version to add another track type with keyname and name to pe displayed
	localparams[#localparams+1]=makeCatenaryParam()


return {
...
	params = localparams
...
	updateFn= function(params)
		...
		local selectedtracktype = paramsutil.getSelectedTrackType(params)
--		local selectedtracktype2 = paramsutil.getSelectedTrackType(params,"trackType2") -- get the other track type selection
		
		result.edgeLists = {
			{
				type = "TRACK",
				params = {
					type = selectedtracktype.filename,
					catenary = params.catenary == 1
				},
				edges = tracks,
				snapNodes = snaps
			}
		}
		...
	end
}

