Singleton introduced - appears to work but not thoroughly tested