add static construct method instantiate singleton pattern