if options.resume:
        p = Path(resultdir)
        ids = list(
            map(lambda s: int(s.stem.split('-')[1]), p.glob("tmp-*.pkl")))
        for i in ids:
            todos.complete(i)

    total = todos.size()
    print("found {} incomplete trials!".format(len(todos.remaining())))

    clients = {}
    s = start_server(options.port)
    s.settimeout(1)
    print("Starting to listen...")
    s.listen(options.max_connections)
    while len(todos.completed()) != todos.size():
        try:
            to_remove = []
            for k in clients:
                if handle_client(clients, k) != None:
                    to_remove.append(k)
            for item in to_remove:
                print("Removing {}".format(item))
                if clients[item]['task'] != None:
                    todos.abort(clients[item]['task'])
                del clients[item]

            c, addr = s.accept()
            c.settimeout(1)
            clients[addr] = {'client': c, 'task': None}
            print("Connected to {}:{}!".format(addr[0], addr[1]))