Flow typing will allow programmers to use control structures to decompose union types that encode some common Lua idioms such as optional values, overloading based on the tags of input parameters, and overloading on the return type of the functions. The evolution of table types will allow programmers to create an empty table to build its type according to the keys that programmers insert in it, so programmers do not need to build the table in a single table constructor.