added singleton method