-- like table.pack from Lua 5.2
-- https://stackoverflow.com/questions/7183998/in-lua-what-is-the-right-way-to-handle-varargs-which-contains-nil/7186820#7186820
pack = function(...)
local result = {...}
result.n = select('#', ...)
return result
end