typesafety, RAII and not using temporaries that might disappear
begin refactoring out userlist into its own object. The session really doesn't care about any of this.