Check and see how the __new function is used. In alot of cases where a new constructor takes a large number of arguements, it is rare to see it called with all the arguements passed in. Usually a small number of arguements are passed in and defaults are accepted for the rest. If this is the case for your function then you can create a small set of overloaded functions that handle the most common cases.