Singleton access modifiers
Basic singleton - thread unsafe
refactor simple factory method