construct tuple at call-site not when building the initial state