better singleton, check for identity