public static Parameter Text(string name, ParameterTextValue value)
 {
     return new Parameter(name, value);
 }
 public Protocol Track(ParameterTextValue hitType)
 {
     var userId = Guid.NewGuid().ToString();
     this.WithParameters(
         Parameter.Text(ParameterName.ClientId, new ParameterTextValue(userId, ASCIIEncoding.Unicode.GetByteCount(userId))),
         Parameter.Text(ParameterName.UserId, new ParameterTextValue(userId, ASCIIEncoding.Unicode.GetByteCount(userId))),
         Parameter.Text(ParameterName.HitType, hitType)
         );
     this.parameterSets.Add(this.trackingParameters.ToDictionary(p => p.Name, p => p));
     return this;
 }