add __new metamethod support