don't use static var, this method is called exactly once