diff --git a/include/proto/proxy.h b/include/proto/proxy.h
index 78f6120..4707e9a 100644
--- a/include/proto/proxy.h
+++ b/include/proto/proxy.h
@@ -38,8 +38,6 @@
 const char *proxy_mode_str(int mode);
 struct proxy *findproxy(const char *name, int mode, int cap);
 struct server *findserver(const struct proxy *px, const char *name);
-int proxy_parse_timeout(const char **args, struct proxy *proxy,
-			struct proxy *defpx, char *err, int errlen);
 
 /*
  * This function returns a string containing the type of the proxy in a format
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:
