added non Singleton version