diff --git a/src/cfgparse.c b/src/cfgparse.c
index 91e6c55..b2af648 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -1087,27 +1087,6 @@
 			return -1;
 		}
 	}
-	else if (!strcmp(args[0], "contimeout") || !strcmp(args[0], "clitimeout") ||
-		 !strcmp(args[0], "srvtimeout") || !strcmp(args[0], "timeout")) {
-
-		/* either we have {con|srv|cli}timeout <value> or we have the
-		 * new form: timeout <type> <value>. The parser needs the word
-		 * preceeding the value.
-		 */
-		const char **start_arg = (const char **)args;
-
-		if (strcmp(args[0], "timeout") == 0)
-			start_arg++;
-
-		snprintf(trash, sizeof(trash), "error near '%s'", args[0]);
-		rc = proxy_parse_timeout(start_arg, curproxy, &defproxy, trash, sizeof(trash));
-		if (rc < 0) {
-			Alert("parsing [%s:%d] : %s\n", file, linenum, trash);
-			return -1;
-		}
-		if (rc > 0)
-			Warning("parsing [%s:%d] : %s\n", file, linenum, trash);
-	}
 	else if (!strcmp(args[0], "retries")) {  /* connection retries */
 		if (warnifnotcap(curproxy, PR_CAP_BE, file, linenum, args[0], NULL))
 			return 0;
diff --git a/src/proxy.c b/src/proxy.c
index e597fc5..f9589ec 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -18,6 +18,7 @@
 #include <sys/stat.h>
 
 #include <common/defaults.h>
+#include <common/cfgparse.h>
 #include <common/compat.h>
 #include <common/config.h>
 #include <common/errors.h>
@@ -80,12 +81,12 @@
  * return zero, it may write an error message into the <err> buffer, for at
  * most <errlen> bytes, trailing zero included. The trailing '\n' must not
  * be written. The function must be called with <args> pointing to the first
- * word after "timeout", with <proxy> pointing to the proxy being parsed, and
+ * command line word, with <proxy> pointing to the proxy being parsed, and
  * <defpx> to the default proxy or NULL. As a special case for compatibility
  * with older configs, it also accepts "{cli|srv|con}timeout" in args[0].
  */
-int proxy_parse_timeout(const char **args, struct proxy *proxy,
-			struct proxy *defpx, char *err, int errlen)
+static int proxy_parse_timeout(char **args, int section, struct proxy *proxy,
+			       struct proxy *defpx, char *err, int errlen)
 {
 	unsigned timeout;
 	int retval, cap;
@@ -94,6 +95,11 @@
 	int *td = NULL;
 
 	retval = 0;
+
+	/* simply skip "timeout" but remain compatible with old form */
+	if (strcmp(args[0], "timeout") == 0)
+		args++;
+
 	name = args[0];
 	if (!strcmp(args[0], "client") || !strcmp(args[0], "clitimeout")) {
 		name = "client";
@@ -500,6 +506,19 @@
 	}
 }
 
+static struct cfg_kw_list cfg_kws = {{ },{
+	{ CFG_LISTEN, "timeout", proxy_parse_timeout },
+	{ CFG_LISTEN, "clitimeout", proxy_parse_timeout },
+	{ CFG_LISTEN, "contimeout", proxy_parse_timeout },
+	{ CFG_LISTEN, "srvtimeout", proxy_parse_timeout },
+	{ 0, NULL, NULL },
+}};
+
+__attribute__((constructor))
+static void __proxy_module_init(void)
+{
+	cfg_register_keywords(&cfg_kws);
+}
 
 /*
  * Local variables:
