diff --git a/exec/ircd.js b/exec/ircd.js
index da129037c9643a5815e000b42ad2e7679e5646b8..08576cc5b9ac816781d3b8e975e85a597706c7e5 100644
--- a/exec/ircd.js
+++ b/exec/ircd.js
@@ -26,7 +26,7 @@ load("nodedefs.js");
 // IF you're making a custom version, it'd be appreciated if you left the
 // version number alone, and add a token in the form of +hack (i.e. 1.0+cyan)
 // This is so everyone knows your revision base, AND type of hack used.
-var version = "1.0+pre8";
+var version = "1.0b";
 // This will dump all I/O to and from the server to your Synchronet console.
 // It also enables some more verbose WALLOPS, especially as they pertain to
 // blocking functions.
@@ -2150,6 +2150,7 @@ function IRCClient_registered_commands(command, cmdline) {
 				kick_reason = this.nick;
 			str = "KICK " + chanid.nam + " " + nickid.nick + " :" + kick_reason;
 			this.bcast_to_channel(chanid.nam, str, true);
+			this.bcast_to_servers(str);
 			nickid.rmchan(Channels[chanid.nam.toUpperCase()]);
 			break;
 		case "KILL":
@@ -2175,7 +2176,8 @@ function IRCClient_registered_commands(command, cmdline) {
 				target = searchbynick(kills[kill]);
 				if (target) {
 					server_wallops("/KILL: " + this.nick + " -> " + target.nick + " (" + reason + ")");
-					target.quit("KILLED by " + this.nick + " (" + reason + ")",true);
+					server_bcast_to_servers(":" + this.nick + " KILL " + target.nick + " :" + reason);
+					target.quit("KILLED by " + this.nick + " (" + reason + ")",false);
 				} else {
 					this.numeric401(kills[kill]);
 				}
@@ -2816,6 +2818,7 @@ function IRCClient_server_commands(origin, command, cmdline) {
 				kick_reason = ThisOrigin.nick;
 			str = "KICK " + chanid.nam + " " + nickid.nick + " :" + kick_reason;
 			ThisOrigin.bcast_to_channel(chanid.nam, str, false);
+			this.bcast_to_servers_raw(":" + ThisOrigin.nick + " " + str);
 			nickid.rmchan(Channels[chanid.nam.toUpperCase()]);
 			break;
 		case "JOIN":
@@ -2932,7 +2935,8 @@ function IRCClient_server_commands(origin, command, cmdline) {
 			for(kill in kills) {
 				target = searchbynick(kills[kill]);
 				if (target) {
-					target.quit(reason,false);
+					this.bcast_to_servers_raw(":" + ThisOrigin.nick + " KILL " + target.nick + " :" + reason);
+					target.quit("KILLED by " + ThisOrigin.nick + " (" + reason + ")",false);
 				}
 			}
 			break;
@@ -2964,8 +2968,8 @@ function IRCClient_server_commands(origin, command, cmdline) {
 			    parseInt(cmd[3]) ) ) {
 				// Nuke our side of things, allow this newly
 				// introduced nick to overrule.
-				collide.quit("Nickname Collision");
 				this.bcast_to_servers("KILL " + collide.nick + " :Nickname Collision.");
+				collide.quit("Nickname Collision");
 			}
 			if (cmd[2][0] == ":") {
 				cmd[2] = cmd[2].slice(1);
@@ -3083,6 +3087,16 @@ function IRCClient_server_commands(origin, command, cmdline) {
 			str = "TOPIC " + chan.nam + " :" + chan.topic;
 			this.bcast_to_channel(chan.nam,str,false);
 			break;
+		case "AKILL":
+			if (!cmd[6])
+				break;
+			this_uh = cmd[2] + "@" + cmd[1];
+			if (isklined(this_uh))
+				break;
+			KLines.push(new KLine(this_uh,ircstring(cmdline),"A"));
+			this.bcast_to_servers_raw(":" + ThisOrigin.nick + " " + cmdline);
+			scan_for_klined_clients();
+			break;
 		default:
 			break;
 	}