def __init__(self, in_queue, out_queue, name, description = None):
        super(APModule, self).__init__()
        signal.signal(signal.SIGINT, self.exit_gracefully)
        signal.signal(signal.SIGTERM, self.exit_gracefully)
        self.daemon = True
        self.config_list= [] # overwrite this list
        self.config_changed = False
        self.config = read_config()
        self.start_time = time.time()
        self.last_ping = None
        self.needs_unloading = Event()
        self.lock = threading.Lock()
        self.in_queue = in_queue
        self.out_queue = out_queue
        self.name = name
        self.ping = PeriodicEvent(frequency = 1.0/3.0, event = self.send_ping)
        self.in_queue_thread = threading.Thread(target=self.in_queue_handling,
                                                args = (self.lock,))
        self.in_queue_thread.daemon = True
        setproctitle.setproctitle(self.name)

        if description is None:
            self.description = "APSync {0} process".format(self.name)
        else:
            self.description = description