design pattern builder/ Singleton/ static Method Factory