diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 89a1eb7..33eeea3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -64,6 +64,9 @@
 
     <body>
         <release version="3.6" date="TBA" description="">
+            <action issue="NET-599" type="update" dev="sebb">
+            Add shorthand FTPClientConfig constructor
+            </action>
             <action issue="NET-593" type="fix" dev="sebb" due-to="Jörg Weule">
             HostnameVerifier is called with ip addess instead of the provided hostname
             </action>
diff --git a/src/main/java/org/apache/commons/net/ftp/FTPClientConfig.java b/src/main/java/org/apache/commons/net/ftp/FTPClientConfig.java
index da0c3d7..ea17402 100644
--- a/src/main/java/org/apache/commons/net/ftp/FTPClientConfig.java
+++ b/src/main/java/org/apache/commons/net/ftp/FTPClientConfig.java
@@ -250,6 +250,26 @@
     }
 
     /**
+     * Constructor which allows setting of the format string member fields
+     * @param systemKey key representing system type of the  server being
+     * connected to. See
+     *  {@link #getServerSystemKey() serverSystemKey}
+     * @param defaultDateFormatStr See
+     *  {@link  #setDefaultDateFormatStr(String)  defaultDateFormatStr}
+     * @param recentDateFormatStr See
+     *  {@link  #setRecentDateFormatStr(String)  recentDateFormatStr}
+     *  @since 3.6
+     */
+    public FTPClientConfig(String systemKey,
+                           String defaultDateFormatStr,
+                           String recentDateFormatStr)
+    {
+        this(systemKey);
+        this.defaultDateFormatStr = defaultDateFormatStr;
+        this.recentDateFormatStr = recentDateFormatStr;
+    }
+
+    /**
      * Constructor which allows setting of most member fields
      * @param systemKey key representing system type of the  server being
      * connected to. See
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java
index 184e341..bab5ab8 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/MVSFTPEntryParser.java
@@ -548,7 +548,7 @@
     @Override
     protected FTPClientConfig getDefaultConfiguration() {
         return new FTPClientConfig(FTPClientConfig.SYST_MVS,
-                DEFAULT_DATE_FORMAT, null, null, null, null);
+                DEFAULT_DATE_FORMAT, null);
     }
 
 }
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.java
index 2878002..c238f3c 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.java
@@ -272,8 +272,7 @@
         return new FTPClientConfig(
                 FTPClientConfig.SYST_UNIX,
                 DEFAULT_DATE_FORMAT,
-                DEFAULT_RECENT_DATE_FORMAT,
-                null, null, null);
+                DEFAULT_RECENT_DATE_FORMAT);
     }
 
 }
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java
index 29df5b0..90464ad 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/NTFTPEntryParser.java
@@ -80,7 +80,7 @@
         FTPClientConfig config2 = new FTPClientConfig(
                 FTPClientConfig.SYST_NT,
                 DEFAULT_DATE_FORMAT2,
-                null, null, null, null);
+                null);
         config2.setDefaultDateFormatStr(DEFAULT_DATE_FORMAT2);
         this.timestampParser = new FTPTimestampParserImpl();
         ((Configurable)this.timestampParser).configure(config2);
@@ -161,7 +161,7 @@
         return new FTPClientConfig(
                 FTPClientConfig.SYST_NT,
                 DEFAULT_DATE_FORMAT,
-                null, null, null, null);
+                null);
     }
 
 }
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java
index c3f0af9..febad69 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java
@@ -171,8 +171,7 @@
     @Override
     protected FTPClientConfig getDefaultConfiguration() {
         return new FTPClientConfig(FTPClientConfig.SYST_NETWARE,
-                DEFAULT_DATE_FORMAT, DEFAULT_RECENT_DATE_FORMAT, null, null,
-                null);
+                DEFAULT_DATE_FORMAT, DEFAULT_RECENT_DATE_FORMAT);
     }
 
 }
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java
index 0fc9451..6c721fa 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/OS2FTPEntryParser.java
@@ -140,7 +140,7 @@
         return new FTPClientConfig(
                 FTPClientConfig.SYST_OS2,
                 DEFAULT_DATE_FORMAT,
-                null, null, null, null);
+                null);
     }
 
 }
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
index c4d52b7..7831ffa 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
@@ -429,7 +429,7 @@
         return new FTPClientConfig(
                 FTPClientConfig.SYST_OS400,
                 DEFAULT_DATE_FORMAT,
-                null, null, null, null);
+                null);
     }
 
 }
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
index fde74a8..5cc4e19 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
@@ -61,7 +61,7 @@
         new FTPClientConfig(
                 FTPClientConfig.SYST_UNIX,
                 NUMERIC_DATE_FORMAT,
-                null, null, null, null);
+                null);
 
     /**
      * this is the regular expression used by this parser.
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java
index 73531ce..d414307 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/VMSFTPEntryParser.java
@@ -245,7 +245,7 @@
         return new FTPClientConfig(
                 FTPClientConfig.SYST_VMS,
                 DEFAULT_DATE_FORMAT,
-                null, null, null, null);
+                null);
     }
 
     // DEPRECATED METHODS - for API compatibility only - DO NOT USE
