def __init__(self, filename, queue, max):
            self.queue = queue
            self.max = max
            self.count = 0

            self.file = DumpFileWriter(filename)
            self.file.open()

            self.running = True

            threading.Thread.__init__(self)
     
 ## Create an ObservationsManager for the Data Source to write to
 ##-------------------------------------------------------------------------
 if WindowSize > 0:
     obsman = Dynamic.ObservationsManager(WindowSize)
 else:
     obsman = Static.ObservationsManager()
 obsman.start()
 
 ## Define the observations queue based on whether or not dumping was set
 ##-------------------------------------------------------------------------
 if DumpObservationsFile:
     DumpQueue = Queue()
     ObservationsQueue = (obsman, DumpQueue)
     
     DumpWriter = DumpFileWriter(filename=DumpObservationsFile, queue=DumpQueue)
     DumpWriter.open()
     DumpWriter.start()
 else:
     ObservationsQueue = obsman
     
 ## Instantiate the Data Source
 ##-------------------------------------------------------------------------
 if ObservationFile:
     DataSource = DumpFileReader(queue=ObservationsQueue,filename=ObservationFile)
 elif SimulatePositions:
     DataSource = Simulator(queue=ObservationsQueue, cali=CalibrationData, tag=TagID,
                                 movement=SimulatePositions, mobility=SimulateMobility)
 else: 
     DataSource = ReceiverServer(queue=ObservationsQueue,t=ReceiverRate,n=ReceiverSamples)