diff --git a/config.h b/config.h
index aeca2dd..df46dc7 100644
--- a/config.h
+++ b/config.h
@@ -102,6 +102,11 @@
  */
 #define	DEFAULT_INVISIBLE
 
+/* 
+ * Define this if you want to have KLINE command for opers and services.
+ */
+#undef KLINE
+
 /*
  * Define this if you want to have TKLINE and UNTKLINE commands
  * for opers and services.
@@ -126,6 +131,7 @@
 #define	OPER_RESTART
 #define	OPER_SET
 #define	OPER_SQUIT
+#define	OPER_KLINE
 #define	OPER_TKLINE
 /* In a perfect world these two (or at least second) would be undefined. */
 #define	OPER_KILL
@@ -214,8 +220,10 @@
  * To use m4 as a preprocessor on the ircd.conf file, define M4_PREPROC.
  * The server will then call m4 each time it reads the ircd.conf file,
  * reading m4 output as the server's ircd.conf file.
+ * Defining USE_M4_PREFIXES makes GNU m4 use -P flag.
  */
 #undef	M4_PREPROC
+#undef	USE_M4_PREFIXES
 
 /*
  * Define if you want to use #include "file" in ircd.conf without M4. 
@@ -232,18 +240,18 @@
  * this option is used unless you tell the system administrator beforehand
  * and obtain their permission to send messages to the system log files.
  */
-#define	USE_SYSLOG
+#undef	USE_SYSLOG
 
 #ifdef	USE_SYSLOG
 /*
  * If you use syslog above, you may want to turn some (none) of the
  * spurious log messages for KILL/SQUIT off.
  */
-#define	SYSLOG_KILL	/* log all operator kills to syslog */
-#define	SYSLOG_SQUIT	/* log all remote squits for all servers to syslog */
-#define	SYSLOG_CONNECT	/* log remote connect messages for other all servs */
+#undef	SYSLOG_KILL	/* log all operator kills to syslog */
+#undef	SYSLOG_SQUIT	/* log all remote squits for all servers to syslog */
+#undef	SYSLOG_CONNECT	/* log remote connect messages for other all servs */
 #undef	SYSLOG_USERS	/* send userlog stuff to syslog */
-#define	SYSLOG_OPER	/* log all users who successfully become an Op */
+#undef	SYSLOG_OPER	/* log all users who successfully become an Op */
 #undef	SYSLOG_CONN	/* log all uncomplete/rejected connections */
 
 /*
@@ -263,7 +271,7 @@
 #undef LOG_SCH_ERROR	/* &ERRORS */
 #undef LOG_SCH_NOTICE	/* &NOTICES */
 #undef LOG_SCH_KILL	/* &KILLS */
-#undef LOG_SCH_CHAN	/* &CHANNELS */
+#undef LOG_SCH_CHAN	/* &CHANNEL */
 #undef LOG_SCH_NUM	/* &NUMERICS */
 #undef LOG_SCH_SERVER	/* &SERVERS */
 #undef LOG_SCH_HASH	/* &HASH */
@@ -288,7 +296,7 @@
 /*
  * Define this if you want to log failed /oper attempts.
  */
-#undef FAILED_OPERLOG
+#define FAILED_OPERLOG
 
 /*
  * Define this to make ircd create logfiles if they do not exist.
@@ -417,7 +425,7 @@
 ** This defines the message that is sent to clients upon connect.
 ** Keep it short.
 */
-#define HELLO_MSG "Hallo, and welcome to IRCnet - one moment please..."
+#define HELLO_MSG "Please wait while we process your connection."
 
 /*
  * Connections rejected by check_clones() will be delayed for this many seconds
@@ -442,13 +450,13 @@
 ** (also user info), CCL_QUIT (client uid, nick, username, host and IP),
 ** CCL_QUITINFO (also quit reason), CCL_NICK (all nick changes).
 */
-#define CLIENTS_CHANNEL_LEVEL (CCL_CONN|CCL_QUIT) 
+#define CLIENTS_CHANNEL_LEVEL (CCL_CONN|CCL_QUIT)
 
 /*
 ** This adds ability to ban users with specified realnames from
 ** connecting to the server. May be useful for various drones.
 */
-#define XLINE
+#undef XLINE
 
 /*
 ** Define the reason users get as a rejection message.
@@ -461,7 +469,7 @@
 /*
 ** Define this to whatever you want to see after successful OPER
 */
-#define TXT_YOUREOPER "Your head was dipped in a pot of cheese fondue"
+#define TXT_YOUREOPER "Your head has been dipped in a pot of cheese fondue"
 
 /*
 ** If you have huge number of K-lines and provide your users with
@@ -534,7 +542,7 @@
  *
  * Defining to 0 disables entering split-mode.
  */
-#define SPLIT_USERS	85000
+#define SPLIT_USERS	70000
 #define SPLIT_SERVERS	85
 
 /*
@@ -568,7 +576,7 @@
 ** Define this to allow MOTD for unregistered clients. Note that this is
 ** required by some European countries laws.
 */
-#define MOTD_UNREG
+#undef MOTD_UNREG
 
 /*
 ** For standard "Gone" away reply for remote clients, undefine this.
@@ -583,10 +591,17 @@
 #undef DISABLE_NICK0_REGISTRATION
 
 /*
-** Define this to significantly speed up rehash with large amounts of I-lines.
-** Wastes some memory each rehash (luckily not indefinitely).
+** Define this if you want to use Japanese channel names in JIS encoding.
 */
-#define FASTER_ILINE_REHASH
+#undef JAPANESE
+
+/*
+** If you want to allow your opers to be able to use SIDTRACE command to
+** see all clients from all servers that share the same SID prefix as your 
+** own, enable this. Useful for server "clusters", like 0PN. Requires also
+** proper ACLs in O-line.
+*/
+#undef ENABLE_SIDTRACE
 
 /*   STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP  */
 /* You shouldn't change anything below this line, unless absolutely needed. */
@@ -604,7 +619,6 @@
 */
 #define	RESTRICT_USERNAMES
 
-
 /* Maximum length the queue of pending connections to one port may grow to.
  * Note that your system limits this, too. FreeBSD, for instance, has sysctl
  * kern.ipc.somaxconn for that. Such must be bigger than this define prior to
@@ -716,6 +730,59 @@
 */
 #define LOCALNICKLEN 15
 
+/*
+** If you don't want your users to have too short nicknames, define
+** minimum nicklen allowed.
+*/
+/* #define MINLOCALNICKLEN 2 */
+
+/*
+** You probably don't want to disable it, but if you run into any problems,
+** here's the knob.
+*/
+#define ENABLE_CIDR_LIMITS
+
+/*
+** Define this to significantly speed up rehash with large amounts of I-lines.
+** Wastes some memory each rehash (luckily not indefinitely).
+*/
+#define FASTER_ILINE_REHASH
+
+/*
+** Restores old behaviour of Y-lines maxlinks limit, which was counted
+** separately per each I-line using it.
+** Note: if you use it with FASTER_ILINE_REHASH, clients will be able
+** to exceed maxlinks limits after each rehash. Sorry.
+*/
+#undef YLINE_LIMITS_OLD_BEHAVIOUR
+
+/*
+** Y-line [user@]host limits are now using ip hash instead of hostname hash,
+** which means counts are against IPs, not hostnames.
+** If you don't like that behaviour, you can undefine it.
+*/
+#define YLINE_LIMITS_IPHASH
+
+/*
+** find_userhost (used in PRIVMSG user%host@server syntax) uses hostname
+** hash. Noone really used that syntax anyway, so noone should notice.
+** If you are rebellious or just don't want to waste memory -- define it.
+** Note that if there's a hostname hash needed (and thus compiled in) 
+** for other reasons, it will be used in find_userhost anyway.
+** Also note that defining this breaks compatibility with RFC 2812, as
+** clients no longer will be able to PRIVMSG user%host@server (though they 
+** will be able to use user%ip@server), but it would still be compatible 
+** with RFC 1459, which defined only "user@server" syntax.
+*/
+#undef FIND_USERHOST_IPHASH
+
+/*
+** Default behaviour of the server after the first netjoin is done.
+** Possible values: 0 (SET CACCEPT OFF), 1 (SET CACCEPT ON)
+** and 2 (SET CACCEPT SPLIT).
+*/
+#define CACCEPT_DEFAULT 2
+
 /*   STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP  */
 /*   STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP  */
 /*   STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP  */
@@ -854,3 +921,32 @@
 #if defined(CLIENTS_CHANNEL) && !defined(CLIENTS_CHANNEL_LEVEL)
 #error define CLIENTS_CHANNEL_LEVEL
 #endif
+
+#if defined(MINLOCALNICKLEN) && ((MINLOCALNICKLEN + 0) < 2)
+#undef MINLOCALNICKLEN
+#endif
+
+#if defined(MINLOCALNICKLEN) && (MINLOCALNICKLEN > LOCALNICKLEN)
+#error MINLOCALNICKLEN bigger than (max)LOCALNICKLEN
+#endif
+
+/* we should probably not bother with that :) */
+#if !defined(NBLOCK_POSIX) && !defined(NBLOCK_BSD) && !defined(NBLOCK_SYSV)
+#undef LISTENER_MAXACCEPT
+#define LISTENER_MAXACCEPT 1
+#endif
+
+/* well, we save some memory if we don't actually need either of the hashes */
+#if defined(YLINE_LIMITS_IPHASH) || defined(FIND_USERHOST_IPHASH)
+#define USE_IPHASH
+#endif
+
+#if !defined(YLINE_LIMITS_IPHASH) || !defined(FIND_USERHOST_IPHASH)
+#define USE_HOSTHASH
+#endif
+
+#if defined(CACCEPT_DEFAULT)
+#if ((CACCEPT_DEFAULT) > 2) || ((CACCEPT_DEFAULT) < 0)
+#error CACCEPT_DEFAULT can be 0, 1 or 2.
+#endif
+#endif
diff --git a/include/servers.conf b/include/servers.conf
index 6ef568f..c07a2ab 100644
--- a/include/servers.conf
+++ b/include/servers.conf
@@ -15,4 +15,6 @@ c%172.40.1.17%BierBeer%*.nl%6667%2%172.40.1.18
 N%172.40.1.17%p8HkMnPtmqYqk%*.nl%%2%172.40.1.18
 H%*%%*.nl%%
 
-# jamesr: password: a80ha71pb
+c%172.31.0.32%a80ha71pb%hub.uk%%0%172.31.0.33
+N%172.31.0.32%v8PRZEupuh5Us%hub.uk%%0%172.31.0.33
+H%*%%hub.uk%%
diff --git a/ircd.klines b/ircd.klines
new file mode 100644
index 0000000..e69de29