fixed/improved AbstractSingleton