diff --git a/include/proto/cli.h b/include/proto/cli.h
new file mode 100644
index 0000000..25c2ee0
--- /dev/null
+++ b/include/proto/cli.h
@@ -0,0 +1,31 @@
+/*
+ * include/proto/cli.h
+ * This file contains definitions of some primitives to dedicated to
+ * statistics output.
+ *
+ * Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef _PROTO_CLI_H
+#define _PROTO_CLI_H
+
+
+struct cli_kw* cli_find_kw(char **args);
+void cli_register_kw(struct cli_kw_list *kw_list);
+
+#endif /* _PROTO_CLI_H */
+
diff --git a/include/proto/stats.h b/include/proto/stats.h
new file mode 100644
index 0000000..dfd8bff
--- /dev/null
+++ b/include/proto/stats.h
@@ -0,0 +1,116 @@
+/*
+ * include/proto/stats.h
+ * This file contains definitions of some primitives to dedicated to
+ * statistics output.
+ *
+ * Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef _PROTO_STATS_H
+#define _PROTO_STATS_H
+
+#include <common/config.h>
+#include <types/applet.h>
+#include <types/stream_interface.h>
+
+
+static inline enum field_format field_format(const struct field *f, int e)
+{
+	return f[e].type & FF_MASK;
+}
+
+static inline enum field_origin field_origin(const struct field *f, int e)
+{
+	return f[e].type & FO_MASK;
+}
+
+static inline enum field_scope field_scope(const struct field *f, int e)
+{
+	return f[e].type & FS_MASK;
+}
+
+static inline enum field_nature field_nature(const struct field *f, int e)
+{
+	return f[e].type & FN_MASK;
+}
+
+static inline const char *field_str(const struct field *f, int e)
+{
+	return (field_format(f, e) == FF_STR) ? f[e].u.str : "";
+}
+
+static inline struct field mkf_s32(uint32_t type, int32_t value)
+{
+	struct field f = { .type = FF_S32 | type, .u.s32 = value };
+	return f;
+}
+
+static inline struct field mkf_u32(uint32_t type, uint32_t value)
+{
+	struct field f = { .type = FF_U32 | type, .u.u32 = value };
+	return f;
+}
+
+static inline struct field mkf_s64(uint32_t type, int64_t value)
+{
+	struct field f = { .type = FF_S64 | type, .u.s64 = value };
+	return f;
+}
+
+static inline struct field mkf_u64(uint32_t type, uint64_t value)
+{
+	struct field f = { .type = FF_U64 | type, .u.u64 = value };
+	return f;
+}
+
+static inline struct field mkf_str(uint32_t type, const char *value)
+{
+	struct field f = { .type = FF_STR | type, .u.str = value };
+	return f;
+}
+
+/* These two structs contains all field names according with
+ * the the number of entries in "enum stat_field" and
+ * "enum info_field"
+ */
+extern const char *info_field_names[];
+extern const char *stat_field_names[];
+
+int stats_fill_info(struct field *info, int len);
+int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len);
+int stats_fill_li_stats(struct proxy *px, struct listener *l, int flags,
+                        struct field *stats, int len);
+int stats_fill_sv_stats(struct proxy *px, struct server *sv, int flags,
+                        struct field *stats, int len);
+int stats_fill_be_stats(struct proxy *px, int flags, struct field *stats, int len);
+
+extern struct applet http_stats_applet;
+
+void stats_io_handler(struct stream_interface *si);
+int stats_emit_raw_data_field(struct chunk *out, const struct field *f);
+int stats_emit_typed_data_field(struct chunk *out, const struct field *f);
+int stats_emit_field_tags(struct chunk *out, const struct field *f, char delim);
+int stats_dump_stat_to_buffer(struct stream_interface *si, struct uri_auth *uri);
+
+#endif /* _PROTO_STATS_H */
+
+/*
+ * Local variables:
+ *  c-indent-level: 8
+ *  c-basic-offset: 8
+ * End:
+ */
diff --git a/include/types/cli.h b/include/types/cli.h
new file mode 100644
index 0000000..35c2c67
--- /dev/null
+++ b/include/types/cli.h
@@ -0,0 +1,134 @@
+/*
+ * include/types/cli.h
+ * This file provides structures and types for CLI.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, version 2.1
+ * exclusively.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef _TYPES_CLI_H
+#define _TYPES_CLI_H
+
+#include <common/mini-clist.h>
+#include <types/applet.h>
+
+struct cli_kw {
+	const char *str_kw[5];   /* keywords ended by NULL, limited to 5
+				 separated keywords combination */
+	const char *usage;   /* usage message */
+	int (*parse)(char **args, struct appctx *appctx, void *private);
+	int (*io_handler)(struct appctx *appctx);
+	void (*io_release)(struct appctx *appctx);
+	void *private;
+};
+
+struct cli_kw_list {
+	struct list list;
+	struct cli_kw kw[VAR_ARRAY];
+};
+
+/* Show Info fields for CLI output. For any field added here, please add the text
+ * representation in the info_field_names array below. Please only append at the end,
+ * before the INF_TOTAL_FIELDS entry, and never insert anything in the middle
+ * nor at the beginning.
+ */
+enum info_field {
+	INF_NAME,
+	INF_VERSION,
+	INF_RELEASE_DATE,
+	INF_NBPROC,
+	INF_PROCESS_NUM,
+	INF_PID,
+	INF_UPTIME,
+	INF_UPTIME_SEC,
+	INF_MEMMAX_MB,
+	INF_POOL_ALLOC_MB,
+	INF_POOL_USED_MB,
+	INF_POOL_FAILED,
+	INF_ULIMIT_N,
+	INF_MAXSOCK,
+	INF_MAXCONN,
+	INF_HARD_MAXCONN,
+	INF_CURR_CONN,
+	INF_CUM_CONN,
+	INF_CUM_REQ,
+	INF_MAX_SSL_CONNS,
+	INF_CURR_SSL_CONNS,
+	INF_CUM_SSL_CONNS,
+	INF_MAXPIPES,
+	INF_PIPES_USED,
+	INF_PIPES_FREE,
+	INF_CONN_RATE,
+	INF_CONN_RATE_LIMIT,
+	INF_MAX_CONN_RATE,
+	INF_SESS_RATE,
+	INF_SESS_RATE_LIMIT,
+	INF_MAX_SESS_RATE,
+	INF_SSL_RATE,
+	INF_SSL_RATE_LIMIT,
+	INF_MAX_SSL_RATE,
+	INF_SSL_FRONTEND_KEY_RATE,
+	INF_SSL_FRONTEND_MAX_KEY_RATE,
+	INF_SSL_FRONTEND_SESSION_REUSE_PCT,
+	INF_SSL_BACKEND_KEY_RATE,
+	INF_SSL_BACKEND_MAX_KEY_RATE,
+	INF_SSL_CACHE_LOOKUPS,
+	INF_SSL_CACHE_MISSES,
+	INF_COMPRESS_BPS_IN,
+	INF_COMPRESS_BPS_OUT,
+	INF_COMPRESS_BPS_RATE_LIM,
+	INF_ZLIB_MEM_USAGE,
+	INF_MAX_ZLIB_MEM_USAGE,
+	INF_TASKS,
+	INF_RUN_QUEUE,
+	INF_IDLE_PCT,
+	INF_NODE,
+	INF_DESCRIPTION,
+
+	/* must always be the last one */
+	INF_TOTAL_FIELDS
+};
+
+
+/* stats socket states */
+enum {
+	STAT_CLI_INIT = 0,   /* initial state, must leave to zero ! */
+	STAT_CLI_END,        /* final state, let's close */
+	STAT_CLI_GETREQ,     /* wait for a request */
+	STAT_CLI_OUTPUT,     /* all states after this one are responses */
+	STAT_CLI_PROMPT,     /* display the prompt (first output, same code) */
+	STAT_CLI_PRINT,      /* display message in cli->msg */
+	STAT_CLI_PRINT_FREE, /* display message in cli->msg. After the display, free the pointer */
+	STAT_CLI_O_INFO,     /* dump info */
+	STAT_CLI_O_SESS,     /* dump streams */
+	STAT_CLI_O_ERR,      /* dump errors */
+	STAT_CLI_O_TAB,      /* dump tables */
+	STAT_CLI_O_CLR,      /* clear tables */
+	STAT_CLI_O_SET,      /* set entries in tables */
+	STAT_CLI_O_STAT,     /* dump stats */
+	STAT_CLI_O_PATS,     /* list all pattern reference available */
+	STAT_CLI_O_PAT,      /* list all entries of a pattern */
+	STAT_CLI_O_MLOOK,    /* lookup a map entry */
+	STAT_CLI_O_POOLS,    /* dump memory pools */
+	STAT_CLI_O_TLSK,     /* list all TLS ticket keys references */
+	STAT_CLI_O_TLSK_ENT, /* list all TLS ticket keys entries for a reference */
+	STAT_CLI_O_RESOLVERS,/* dump a resolver's section nameservers counters */
+	STAT_CLI_O_SERVERS_STATE, /* dump server state and changing information */
+	STAT_CLI_O_BACKEND,  /* dump backend list */
+	STAT_CLI_O_ENV,      /* dump environment */
+	STAT_CLI_O_CUSTOM,   /* custom callback pointer */
+};
+
+
+#endif /* _TYPES_CLI_H */
diff --git a/include/proto/dumpstats.h b/include/types/stats.h
similarity index 61%
rename from include/proto/dumpstats.h
rename to include/types/stats.h
index 6e0adfa..dd52bba 100644
--- a/include/proto/dumpstats.h
+++ b/include/types/stats.h
@@ -1,9 +1,6 @@
 /*
- * include/proto/dumpstats.h
- * This file contains definitions of some primitives to dedicated to
- * statistics output.
- *
- * Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu
+ * include/types/stats.h
+ * This file provides structures and types for stats.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -20,12 +17,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#ifndef _PROTO_DUMPSTATS_H
-#define _PROTO_DUMPSTATS_H
-
-#include <common/config.h>
-#include <types/applet.h>
-#include <types/stream_interface.h>
+#ifndef _TYPES_STATS_H
+#define _TYPES_STATS_H
 
 /* Flags for applet.ctx.stats.flags */
 #define STAT_FMT_HTML   0x00000001      /* dump the stats in HTML format */
@@ -55,162 +48,62 @@
 #define STAT_SCOPE_INPUT_NAME "scope" /* pattern form scope name <input> in html form */
 #define STAT_SCOPE_PATTERN    "?" STAT_SCOPE_INPUT_NAME "="
 
-/* Show Info fields for CLI output. For any field added here, please add the text
- * representation in the info_field_names array below. Please only append at the end,
- * before the INF_TOTAL_FIELDS entry, and never insert anything in the middle
- * nor at the beginning.
- */
-enum info_field {
-	INF_NAME,
-	INF_VERSION,
-	INF_RELEASE_DATE,
-	INF_NBPROC,
-	INF_PROCESS_NUM,
-	INF_PID,
-	INF_UPTIME,
-	INF_UPTIME_SEC,
-	INF_MEMMAX_MB,
-	INF_POOL_ALLOC_MB,
-	INF_POOL_USED_MB,
-	INF_POOL_FAILED,
-	INF_ULIMIT_N,
-	INF_MAXSOCK,
-	INF_MAXCONN,
-	INF_HARD_MAXCONN,
-	INF_CURR_CONN,
-	INF_CUM_CONN,
-	INF_CUM_REQ,
-	INF_MAX_SSL_CONNS,
-	INF_CURR_SSL_CONNS,
-	INF_CUM_SSL_CONNS,
-	INF_MAXPIPES,
-	INF_PIPES_USED,
-	INF_PIPES_FREE,
-	INF_CONN_RATE,
-	INF_CONN_RATE_LIMIT,
-	INF_MAX_CONN_RATE,
-	INF_SESS_RATE,
-	INF_SESS_RATE_LIMIT,
-	INF_MAX_SESS_RATE,
-	INF_SSL_RATE,
-	INF_SSL_RATE_LIMIT,
-	INF_MAX_SSL_RATE,
-	INF_SSL_FRONTEND_KEY_RATE,
-	INF_SSL_FRONTEND_MAX_KEY_RATE,
-	INF_SSL_FRONTEND_SESSION_REUSE_PCT,
-	INF_SSL_BACKEND_KEY_RATE,
-	INF_SSL_BACKEND_MAX_KEY_RATE,
-	INF_SSL_CACHE_LOOKUPS,
-	INF_SSL_CACHE_MISSES,
-	INF_COMPRESS_BPS_IN,
-	INF_COMPRESS_BPS_OUT,
-	INF_COMPRESS_BPS_RATE_LIM,
-	INF_ZLIB_MEM_USAGE,
-	INF_MAX_ZLIB_MEM_USAGE,
-	INF_TASKS,
-	INF_RUN_QUEUE,
-	INF_IDLE_PCT,
-	INF_NODE,
-	INF_DESCRIPTION,
+/* Actions available for the stats admin forms */
+enum {
+	ST_ADM_ACTION_NONE = 0,
 
-	/* must always be the last one */
-	INF_TOTAL_FIELDS
+	/* enable/disable health checks */
+	ST_ADM_ACTION_DHLTH,
+	ST_ADM_ACTION_EHLTH,
+
+	/* force health check status */
+	ST_ADM_ACTION_HRUNN,
+	ST_ADM_ACTION_HNOLB,
+	ST_ADM_ACTION_HDOWN,
+
+	/* enable/disable agent checks */
+	ST_ADM_ACTION_DAGENT,
+	ST_ADM_ACTION_EAGENT,
+
+	/* force agent check status */
+	ST_ADM_ACTION_ARUNN,
+	ST_ADM_ACTION_ADOWN,
+
+	/* set admin state */
+	ST_ADM_ACTION_READY,
+	ST_ADM_ACTION_DRAIN,
+	ST_ADM_ACTION_MAINT,
+	ST_ADM_ACTION_SHUTDOWN,
+	/* these are the ancient actions, still available for compatibility */
+	ST_ADM_ACTION_DISABLE,
+	ST_ADM_ACTION_ENABLE,
+	ST_ADM_ACTION_STOP,
+	ST_ADM_ACTION_START,
 };
 
-/* Stats fields for CSV output. For any field added here, please add the text
- * representation in the stat_field_names array below. Please only append at the end,
- * before the ST_F_TOTAL_FIELDS entry, and never insert anything in the middle
- * nor at the beginning.
- */
-enum stat_field {
-	ST_F_PXNAME,
-	ST_F_SVNAME,
-	ST_F_QCUR,
-	ST_F_QMAX,
-	ST_F_SCUR,
-	ST_F_SMAX,
-	ST_F_SLIM,
-	ST_F_STOT,
-	ST_F_BIN ,
-	ST_F_BOUT,
-	ST_F_DREQ,
-	ST_F_DRESP,
-	ST_F_EREQ,
-	ST_F_ECON,
-	ST_F_ERESP,
-	ST_F_WRETR,
-	ST_F_WREDIS,
-	ST_F_STATUS,
-	ST_F_WEIGHT,
-	ST_F_ACT,
-	ST_F_BCK,
-	ST_F_CHKFAIL,
-	ST_F_CHKDOWN,
-	ST_F_LASTCHG,
-	ST_F_DOWNTIME,
-	ST_F_QLIMIT,
-	ST_F_PID,
-	ST_F_IID,
-	ST_F_SID,
-	ST_F_THROTTLE,
-	ST_F_LBTOT,
-	ST_F_TRACKED,
-	ST_F_TYPE,
-	ST_F_RATE,
-	ST_F_RATE_LIM,
-	ST_F_RATE_MAX,
-	ST_F_CHECK_STATUS,
-	ST_F_CHECK_CODE,
-	ST_F_CHECK_DURATION,
-	ST_F_HRSP_1XX,
-	ST_F_HRSP_2XX,
-	ST_F_HRSP_3XX,
-	ST_F_HRSP_4XX,
-	ST_F_HRSP_5XX,
-	ST_F_HRSP_OTHER,
-	ST_F_HANAFAIL,
-	ST_F_REQ_RATE,
-	ST_F_REQ_RATE_MAX,
-	ST_F_REQ_TOT,
-	ST_F_CLI_ABRT,
-	ST_F_SRV_ABRT,
-	ST_F_COMP_IN,
-	ST_F_COMP_OUT,
-	ST_F_COMP_BYP,
-	ST_F_COMP_RSP,
-	ST_F_LASTSESS,
-	ST_F_LAST_CHK,
-	ST_F_LAST_AGT,
-	ST_F_QTIME,
-	ST_F_CTIME,
-	ST_F_RTIME,
-	ST_F_TTIME,
-	ST_F_AGENT_STATUS,
-	ST_F_AGENT_CODE,
-	ST_F_AGENT_DURATION,
-	ST_F_CHECK_DESC,
-	ST_F_AGENT_DESC,
-	ST_F_CHECK_RISE,
-	ST_F_CHECK_FALL,
-	ST_F_CHECK_HEALTH,
-	ST_F_AGENT_RISE,
-	ST_F_AGENT_FALL,
-	ST_F_AGENT_HEALTH,
-	ST_F_ADDR,
-	ST_F_COOKIE,
-	ST_F_MODE,
-	ST_F_ALGO,
-	ST_F_CONN_RATE,
-	ST_F_CONN_RATE_MAX,
-	ST_F_CONN_TOT,
-	ST_F_INTERCEPTED,
-	ST_F_DCON,
-	ST_F_DSES,
 
-	/* must always be the last one */
-	ST_F_TOTAL_FIELDS
+/* data transmission states for the stats responses */
+enum {
+	STAT_ST_INIT = 0,
+	STAT_ST_HEAD,
+	STAT_ST_INFO,
+	STAT_ST_LIST,
+	STAT_ST_END,
+	STAT_ST_FIN,
 };
 
+/* data transmission states for the stats responses inside a proxy */
+enum {
+	STAT_PX_ST_INIT = 0,
+	STAT_PX_ST_TH,
+	STAT_PX_ST_FE,
+	STAT_PX_ST_LI,
+	STAT_PX_ST_SV,
+	STAT_PX_ST_BE,
+	STAT_PX_ST_END,
+	STAT_PX_ST_FIN,
+};
+
 /* This level of detail is needed to let the stats consumer know how to
  * aggregate them (eg: between processes or cluster nodes). Only a few
  * combinations are actually in use, though the mechanism tends to make
@@ -331,195 +224,99 @@
 	} u;
 };
 
-static inline enum field_format field_format(const struct field *f, int e)
-{
-	return f[e].type & FF_MASK;
-}
-
-static inline enum field_origin field_origin(const struct field *f, int e)
-{
-	return f[e].type & FO_MASK;
-}
-
-static inline enum field_scope field_scope(const struct field *f, int e)
-{
-	return f[e].type & FS_MASK;
-}
-
-static inline enum field_nature field_nature(const struct field *f, int e)
-{
-	return f[e].type & FN_MASK;
-}
-
-static inline const char *field_str(const struct field *f, int e)
-{
-	return (field_format(f, e) == FF_STR) ? f[e].u.str : "";
-}
-
-static inline struct field mkf_s32(uint32_t type, int32_t value)
-{
-	struct field f = { .type = FF_S32 | type, .u.s32 = value };
-	return f;
-}
-
-static inline struct field mkf_u32(uint32_t type, uint32_t value)
-{
-	struct field f = { .type = FF_U32 | type, .u.u32 = value };
-	return f;
-}
-
-static inline struct field mkf_s64(uint32_t type, int64_t value)
-{
-	struct field f = { .type = FF_S64 | type, .u.s64 = value };
-	return f;
-}
-
-static inline struct field mkf_u64(uint32_t type, uint64_t value)
-{
-	struct field f = { .type = FF_U64 | type, .u.u64 = value };
-	return f;
-}
-
-static inline struct field mkf_str(uint32_t type, const char *value)
-{
-	struct field f = { .type = FF_STR | type, .u.str = value };
-	return f;
-}
-
-/* These two structs contains all field names according with
- * the the number of entries in "enum stat_field" and
- * "enum info_field"
+/* Stats fields for CSV output. For any field added here, please add the text
+ * representation in the stat_field_names array below. Please only append at the end,
+ * before the ST_F_TOTAL_FIELDS entry, and never insert anything in the middle
+ * nor at the beginning.
  */
-extern const char *info_field_names[];
-extern const char *stat_field_names[];
-
-int stats_fill_info(struct field *info, int len);
-int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len);
-int stats_fill_li_stats(struct proxy *px, struct listener *l, int flags,
-                        struct field *stats, int len);
-int stats_fill_sv_stats(struct proxy *px, struct server *sv, int flags,
-                        struct field *stats, int len);
-int stats_fill_be_stats(struct proxy *px, int flags, struct field *stats, int len);
-
-extern struct applet http_stats_applet;
-
-void stats_io_handler(struct stream_interface *si);
-int stats_emit_raw_data_field(struct chunk *out, const struct field *f);
-int stats_emit_typed_data_field(struct chunk *out, const struct field *f);
-int stats_emit_field_tags(struct chunk *out, const struct field *f, char delim);
-
-
-struct cli_kw {
-	const char *str_kw[5];   /* keywords ended by NULL, limited to 5
-				 separated keywords combination */
-	const char *usage;   /* usage message */
-	int (*parse)(char **args, struct appctx *appctx, void *private);
-	int (*io_handler)(struct appctx *appctx);
-	void (*io_release)(struct appctx *appctx);
-	void *private;
-};
-
-struct cli_kw_list {
-	struct list list;
-	struct cli_kw kw[VAR_ARRAY];
-};
-
-struct cli_kw* cli_find_kw(char **args);
-void cli_register_kw(struct cli_kw_list *kw_list);
-
-/* stats socket states */
-enum {
-	STAT_CLI_INIT = 0,   /* initial state, must leave to zero ! */
-	STAT_CLI_END,        /* final state, let's close */
-	STAT_CLI_GETREQ,     /* wait for a request */
-	STAT_CLI_OUTPUT,     /* all states after this one are responses */
-	STAT_CLI_PROMPT,     /* display the prompt (first output, same code) */
-	STAT_CLI_PRINT,      /* display message in cli->msg */
-	STAT_CLI_PRINT_FREE, /* display message in cli->msg. After the display, free the pointer */
-	STAT_CLI_O_INFO,     /* dump info */
-	STAT_CLI_O_SESS,     /* dump streams */
-	STAT_CLI_O_ERR,      /* dump errors */
-	STAT_CLI_O_TAB,      /* dump tables */
-	STAT_CLI_O_CLR,      /* clear tables */
-	STAT_CLI_O_SET,      /* set entries in tables */
-	STAT_CLI_O_STAT,     /* dump stats */
-	STAT_CLI_O_PATS,     /* list all pattern reference available */
-	STAT_CLI_O_PAT,      /* list all entries of a pattern */
-	STAT_CLI_O_MLOOK,    /* lookup a map entry */
-	STAT_CLI_O_POOLS,    /* dump memory pools */
-	STAT_CLI_O_TLSK,     /* list all TLS ticket keys references */
-	STAT_CLI_O_TLSK_ENT, /* list all TLS ticket keys entries for a reference */
-	STAT_CLI_O_RESOLVERS,/* dump a resolver's section nameservers counters */
-	STAT_CLI_O_SERVERS_STATE, /* dump server state and changing information */
-	STAT_CLI_O_BACKEND,  /* dump backend list */
-	STAT_CLI_O_ENV,      /* dump environment */
-	STAT_CLI_O_CUSTOM,   /* custom callback pointer */
-};
-
-/* Actions available for the stats admin forms */
-enum {
-	ST_ADM_ACTION_NONE = 0,
-
-	/* enable/disable health checks */
-	ST_ADM_ACTION_DHLTH,
-	ST_ADM_ACTION_EHLTH,
-
-	/* force health check status */
-	ST_ADM_ACTION_HRUNN,
-	ST_ADM_ACTION_HNOLB,
-	ST_ADM_ACTION_HDOWN,
-
-	/* enable/disable agent checks */
-	ST_ADM_ACTION_DAGENT,
-	ST_ADM_ACTION_EAGENT,
-
-	/* force agent check status */
-	ST_ADM_ACTION_ARUNN,
-	ST_ADM_ACTION_ADOWN,
-
-	/* set admin state */
-	ST_ADM_ACTION_READY,
-	ST_ADM_ACTION_DRAIN,
-	ST_ADM_ACTION_MAINT,
-	ST_ADM_ACTION_SHUTDOWN,
-	/* these are the ancient actions, still available for compatibility */
-	ST_ADM_ACTION_DISABLE,
-	ST_ADM_ACTION_ENABLE,
-	ST_ADM_ACTION_STOP,
-	ST_ADM_ACTION_START,
-};
-
-
-/* data transmission states for the stats responses */
-enum {
-	STAT_ST_INIT = 0,
-	STAT_ST_HEAD,
-	STAT_ST_INFO,
-	STAT_ST_LIST,
-	STAT_ST_END,
-	STAT_ST_FIN,
-};
+enum stat_field {
+	ST_F_PXNAME,
+	ST_F_SVNAME,
+	ST_F_QCUR,
+	ST_F_QMAX,
+	ST_F_SCUR,
+	ST_F_SMAX,
+	ST_F_SLIM,
+	ST_F_STOT,
+	ST_F_BIN ,
+	ST_F_BOUT,
+	ST_F_DREQ,
+	ST_F_DRESP,
+	ST_F_EREQ,
+	ST_F_ECON,
+	ST_F_ERESP,
+	ST_F_WRETR,
+	ST_F_WREDIS,
+	ST_F_STATUS,
+	ST_F_WEIGHT,
+	ST_F_ACT,
+	ST_F_BCK,
+	ST_F_CHKFAIL,
+	ST_F_CHKDOWN,
+	ST_F_LASTCHG,
+	ST_F_DOWNTIME,
+	ST_F_QLIMIT,
+	ST_F_PID,
+	ST_F_IID,
+	ST_F_SID,
+	ST_F_THROTTLE,
+	ST_F_LBTOT,
+	ST_F_TRACKED,
+	ST_F_TYPE,
+	ST_F_RATE,
+	ST_F_RATE_LIM,
+	ST_F_RATE_MAX,
+	ST_F_CHECK_STATUS,
+	ST_F_CHECK_CODE,
+	ST_F_CHECK_DURATION,
+	ST_F_HRSP_1XX,
+	ST_F_HRSP_2XX,
+	ST_F_HRSP_3XX,
+	ST_F_HRSP_4XX,
+	ST_F_HRSP_5XX,
+	ST_F_HRSP_OTHER,
+	ST_F_HANAFAIL,
+	ST_F_REQ_RATE,
+	ST_F_REQ_RATE_MAX,
+	ST_F_REQ_TOT,
+	ST_F_CLI_ABRT,
+	ST_F_SRV_ABRT,
+	ST_F_COMP_IN,
+	ST_F_COMP_OUT,
+	ST_F_COMP_BYP,
+	ST_F_COMP_RSP,
+	ST_F_LASTSESS,
+	ST_F_LAST_CHK,
+	ST_F_LAST_AGT,
+	ST_F_QTIME,
+	ST_F_CTIME,
+	ST_F_RTIME,
+	ST_F_TTIME,
+	ST_F_AGENT_STATUS,
+	ST_F_AGENT_CODE,
+	ST_F_AGENT_DURATION,
+	ST_F_CHECK_DESC,
+	ST_F_AGENT_DESC,
+	ST_F_CHECK_RISE,
+	ST_F_CHECK_FALL,
+	ST_F_CHECK_HEALTH,
+	ST_F_AGENT_RISE,
+	ST_F_AGENT_FALL,
+	ST_F_AGENT_HEALTH,
+	ST_F_ADDR,
+	ST_F_COOKIE,
+	ST_F_MODE,
+	ST_F_ALGO,
+	ST_F_CONN_RATE,
+	ST_F_CONN_RATE_MAX,
+	ST_F_CONN_TOT,
+	ST_F_INTERCEPTED,
+	ST_F_DCON,
+	ST_F_DSES,
 
-/* data transmission states for the stats responses inside a proxy */
-enum {
-	STAT_PX_ST_INIT = 0,
-	STAT_PX_ST_TH,
-	STAT_PX_ST_FE,
-	STAT_PX_ST_LI,
-	STAT_PX_ST_SV,
-	STAT_PX_ST_BE,
-	STAT_PX_ST_END,
-	STAT_PX_ST_FIN,
+	/* must always be the last one */
+	ST_F_TOTAL_FIELDS
 };
 
-
-int stats_dump_stat_to_buffer(struct stream_interface *si, struct uri_auth *uri);
 
-#endif /* _PROTO_DUMPSTATS_H */
-
-/*
- * Local variables:
- *  c-indent-level: 8
- *  c-basic-offset: 8
- * End:
- */
+#endif /* _TYPES_STATS_H */
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 7b05727..b0e636c 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -51,6 +51,7 @@
 #include <types/peers.h>
 #include <types/mailers.h>
 #include <types/dns.h>
+#include <types/stats.h>
 
 #include <proto/acl.h>
 #include <proto/auth.h>
@@ -58,7 +59,7 @@
 #include <proto/channel.h>
 #include <proto/checks.h>
 #include <proto/compression.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/filters.h>
 #include <proto/frontend.h>
 #include <proto/hdr_idx.h>
diff --git a/src/checks.c b/src/checks.c
index a9b89d0..61d3768 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -39,6 +39,7 @@
 #include <types/global.h>
 #include <types/mailers.h>
 #include <types/dns.h>
+#include <types/stats.h>
 
 #ifdef USE_OPENSSL
 #include <types/ssl_sock.h>
@@ -47,7 +48,7 @@
 
 #include <proto/backend.h>
 #include <proto/checks.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/fd.h>
 #include <proto/log.h>
 #include <proto/queue.h>
diff --git a/src/cli.c b/src/cli.c
index d7de7cb..e15fc8a 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -38,14 +38,16 @@
 #include <common/base64.h>
 
 #include <types/applet.h>
+#include <types/cli.h>
 #include <types/global.h>
 #include <types/dns.h>
+#include <types/stats.h>
 
 #include <proto/backend.h>
 #include <proto/channel.h>
 #include <proto/checks.h>
 #include <proto/compression.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/fd.h>
 #include <proto/freq_ctr.h>
 #include <proto/frontend.h>
diff --git a/src/hlua.c b/src/hlua.c
index 5594484..5595446 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -25,14 +25,17 @@
 
 #include <common/cfgparse.h>
 
+#include <types/cli.h>
 #include <types/hlua.h>
 #include <types/proxy.h>
+#include <types/stats.h>
 
 #include <proto/arg.h>
 #include <proto/applet.h>
 #include <proto/channel.h>
+#include <proto/cli.h>
 #include <proto/connection.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/hdr_idx.h>
 #include <proto/hlua.h>
 #include <proto/hlua_fcn.h>
diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
index a21065d..3af4f6e 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -21,13 +21,15 @@
 #include <common/time.h>
 #include <common/uri_auth.h>
 
+#include <types/cli.h>
 #include <types/hlua.h>
 #include <types/proxy.h>
+#include <types/stats.h>
 
-#include <proto/dumpstats.h>
 #include <proto/proto_http.h>
 #include <proto/proxy.h>
 #include <proto/server.h>
+#include <proto/stats.h>
 
 /* Contains the class reference of the concat object. */
 static int class_concat_ref;
diff --git a/src/proto_http.c b/src/proto_http.c
index 650e02a..181dfc2 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -41,6 +41,7 @@
 #include <types/capture.h>
 #include <types/filters.h>
 #include <types/global.h>
+#include <types/stats.h>
 
 #include <proto/acl.h>
 #include <proto/action.h>
@@ -50,7 +51,7 @@
 #include <proto/channel.h>
 #include <proto/checks.h>
 #include <proto/compression.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/fd.h>
 #include <proto/filters.h>
 #include <proto/frontend.h>
diff --git a/src/stats.c b/src/stats.c
index 713629e..aef6299 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -40,12 +40,13 @@
 #include <types/applet.h>
 #include <types/global.h>
 #include <types/dns.h>
+#include <types/stats.h>
 
 #include <proto/backend.h>
 #include <proto/channel.h>
 #include <proto/checks.h>
 #include <proto/compression.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/fd.h>
 #include <proto/freq_ctr.h>
 #include <proto/frontend.h>
diff --git a/src/stream.c b/src/stream.c
index 288d36d..346e7b6 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -24,6 +24,7 @@
 #include <types/capture.h>
 #include <types/filters.h>
 #include <types/global.h>
+#include <types/stats.h>
 
 #include <proto/acl.h>
 #include <proto/action.h>
@@ -32,7 +33,7 @@
 #include <proto/channel.h>
 #include <proto/checks.h>
 #include <proto/connection.h>
-#include <proto/dumpstats.h>
+#include <proto/stats.h>
 #include <proto/fd.h>
 #include <proto/filters.h>
 #include <proto/freq_ctr.h>
