diff --git a/src/RestSharp/Parameters/DefaultParameters.cs b/src/RestSharp/Parameters/DefaultParameters.cs
index 02373f713..6d3dc89a7 100644
--- a/src/RestSharp/Parameters/DefaultParameters.cs
+++ b/src/RestSharp/Parameters/DefaultParameters.cs
@@ -22,7 +22,14 @@ public sealed class DefaultParameters : ParametersCollection {
 
     public DefaultParameters(ReadOnlyRestClientOptions options) => _options = options;
 
-    public void AddParameter(Parameter parameter) {
+    /// <summary>
+    /// Safely add a default parameter to the collection.
+    /// </summary>
+    /// <param name="parameter">Parameter to add</param>
+    /// <returns></returns>
+    /// <exception cref="NotSupportedException"></exception>
+    /// <exception cref="ArgumentException"></exception>
+    public DefaultParameters AddParameter(Parameter parameter) {
         lock (_lock) {
             if (parameter.Type == ParameterType.RequestBody)
                 throw new NotSupportedException(
@@ -30,14 +37,43 @@ public void AddParameter(Parameter parameter) {
                 );
 
             if (!_options.AllowMultipleDefaultParametersWithSameName &&
-                !MultiParameterTypes.Contains(parameter.Type)       &&
+                !MultiParameterTypes.Contains(parameter.Type)        &&
                 this.Any(x => x.Name == parameter.Name)) {
                 throw new ArgumentException("A default parameters with the same name has already been added", nameof(parameter));
             }
 
             Parameters.Add(parameter);
         }
+
+        return this;
     }
 
+    /// <summary>
+    /// Safely removes all the default parameters with the given name and type.
+    /// </summary>
+    /// <param name="name">Parameter name</param>
+    /// <param name="type">Parameter type</param>
+    /// <returns></returns>
+    [PublicAPI]
+    public DefaultParameters RemoveParameter(string name, ParameterType type) {
+        lock (_lock) {
+            Parameters.RemoveAll(x => x.Name == name && x.Type == type);
+        }
+
+        return this;
+    }
+
+    /// <summary>
+    /// Replace a default parameter with the same name and type.
+    /// </summary>
+    /// <param name="parameter">Parameter instance</param>
+    /// <returns></returns>
+    [PublicAPI]
+    public DefaultParameters ReplaceParameter(Parameter parameter)
+        =>
+            // ReSharper disable once NotResolvedInText
+            RemoveParameter(Ensure.NotEmptyString(parameter.Name, "Parameter name"), parameter.Type)
+                .AddParameter(parameter);
+
     static readonly ParameterType[] MultiParameterTypes = { ParameterType.QueryString, ParameterType.GetOrPost };
 }