attach __call metamethod to all constructor tables that have 'new' function.
massive refactor to reduce duplicated code.