added Singelton pattern