Changes
stop making the default "default" value true, as we run into problems if you need to distinguish between false and nil
elseif val == true or val == 'yes' or val == 'y' or val == 'true' or tonumber(val) == 1 then
return true
return default
end
end