diff --git a/start_sploit.py b/start_sploit.py
index cb0cba7..06d300b 100755
--- a/start_sploit.py
+++ b/start_sploit.py
@@ -47,9 +47,15 @@ class TeamOwner(Thread):
         self.flags = set(oldflags)

         self.cycle_num = 0
+        self.spl = None
+
+        self.wantstop = False
+
+        log("Hacking team %s, launching in a loop: %s %s" %
+              (self.team_name, basename(self.sploit_name), self.team_ip))

     def run(self):
-        while True:
+        while not self.wantstop:
             try:
                 self.cycle_num += 1
                 self.launch_spl()
@@ -61,18 +67,14 @@ class TeamOwner(Thread):
                 sleep(PAUSE)

     def launch_spl(self):
-        log("Lauching iter. %d of %s %s for %s" %
-              (self.cycle_num, basename(self.sploit_name),
-               self.team_ip, self.team_name))
-
         self.last_flag_time = time()

         need_launch_in_shell = (os.name == "nt")
         need_close_fd = (os.name != "nt")
-        spl = Popen([self.sploit_name, self.team_ip],
-                    stdout=PIPE, stderr=STDOUT, bufsize=1,
-                    shell=need_launch_in_shell, close_fds=need_close_fd)
+        self.spl = Popen([self.sploit_name, self.team_ip],
+                         stdout=PIPE, stderr=STDOUT, bufsize=1,
+                         shell=need_launch_in_shell, close_fds=need_close_fd)

         q = Queue()

@@ -84,7 +86,7 @@ class TeamOwner(Thread):
                 if not line:
                     break

-        t = Thread(target=enqueue_output, args=(q, spl.stdout))
+        t = Thread(target=enqueue_output, args=(q, self.spl.stdout))
         t.daemon = True
         t.start()

@@ -126,8 +128,10 @@ class TeamOwner(Thread):
                 else:
                     log("Flag from %s: %s (dup)" % (self.team_name, flag))

-        spl.kill()
-
+        if os.name != "nt":
+            self.spl.kill()
+        else:
+            self.spl.communicate()

 if len(sys.argv) < 2:
@@ -143,22 +147,43 @@ if not exists(sploit_name):
 if not exists("flags"):
     os.makedirs("flags")

-owners = []
-for team_name, team_ip in TEAMS.items():
-    owner = TeamOwner(sploit_name, team_name, team_ip)
-    owner.daemon = True
-    owners.append(owner)
-
-for owner in owners:
-    owner.start()  # start pwning thread for each team
-
 try:
+    if os.name != "nt":
+        os.setpgrp()
+    else:
+        # Because Windows sucks at the proccess management
+        log("Windows detected. Timeouts are not supported on this os!")
+        log("Please write only short-time-running exploits")
+        TIMEOUT_SILENCE = 0xFFFFFFFF
+        TIMEOUT_NOFLAGS = 0XFFFFFFFF
+
+    owners = []
+    for team_name, team_ip in TEAMS.items():
+        owner = TeamOwner(sploit_name, team_name, team_ip)
+        owner.daemon = True
+        owners.append(owner)
+
+    for owner in owners:
+        owner.start()  # start pwning thread for each team
+
     while True:
+        # generate stats in a loop
+        last_stats = [(o.team_name, len(o.flags), o.cycle_num) for o in owners]
         sleep(60 - int(time()) % 60)  # show stat on zero second
-        stats = ["%s: %d" % (o.team_name, len(o.flags)) for o in owners]
-        log("Flag stats: " + ", ".join(stats))
+        curr_stats = [(o.team_name, len(o.flags), o.cycle_num) for o in owners]
+        diff_stats = [(curr_stats[i][0],
+                      curr_stats[i][1] - last_stats[i][1],
+                      curr_stats[i][2] - last_stats[i][2])
+                            for i in range(len(curr_stats))]
+        flag_stats = ["%s: %d" % (s[0], s[1]) for s in diff_stats]
+        log("LAST MINUTE FLAG STATS: " + ", ".join(flag_stats))
+        iter_stats = ["%s: %d" % (s[0], s[2]) for s in diff_stats]
+        log("LAST MINUTE LAUNCHES STATS: " + ", ".join(iter_stats))

 except KeyboardInterrupt:
     print("Ctrl-c received!")

+# kill all sploits with hardest fire I can cast
 log("Done")
+if os.name != "nt":
+    os.killpg(0, 9)  # UNIX only =(
- nice stats
- ensure that proccess is killed after run
- less windows support