add __new__, singleton