added singleton
updated