diff --git a/Source/Processors/DataThreads/DataThread.cpp b/Source/Processors/DataThreads/DataThread.cpp
index 034d66ac93e64582e14ae996c9762ef7f1bd6c60..a3033780cdf8cd238a395c35c009adbd72cbb580 100644
--- a/Source/Processors/DataThreads/DataThread.cpp
+++ b/Source/Processors/DataThreads/DataThread.cpp
@@ -33,7 +33,7 @@ DataThread::DataThread(SourceNode* s) : Thread ("Data Thread"), dataBuffer(0)
 
 DataThread::~DataThread() 
 {
-    deleteAndZero(dataBuffer);
+    //deleteAndZero(dataBuffer);
 }
 
 void DataThread::run() {
diff --git a/Source/Processors/DataThreads/DataThread.h b/Source/Processors/DataThreads/DataThread.h
index 001bb8e5fabc36645a5ea8c49a8792ebdf8b9448..0ab79ba6bdb1339bf945883f6fd97becbca8887c 100644
--- a/Source/Processors/DataThreads/DataThread.h
+++ b/Source/Processors/DataThreads/DataThread.h
@@ -54,7 +54,7 @@ public:
 
 	virtual bool updateBuffer() = 0;
 
-	DataBuffer* dataBuffer;
+	ScopedPointer<DataBuffer> dataBuffer;
 
 	virtual bool foundInputSource() = 0;
 	virtual bool startAcquisition() = 0;
diff --git a/Source/Processors/DataThreads/FPGAThread.cpp b/Source/Processors/DataThreads/FPGAThread.cpp
index f7f45df00d87e3a5bc3d2c17f7fe47d84c4faa78..34fb9995d69e1db6ec2214b35c39f40651ab2587 100644
--- a/Source/Processors/DataThreads/FPGAThread.cpp
+++ b/Source/Processors/DataThreads/FPGAThread.cpp
@@ -72,8 +72,6 @@ FPGAThread::~FPGAThread() {
 	
 	std::cout << "FPGA interface destroyed." << std::endl;
 
-	// probably not the best way to do this:
-	deleteAndZero(dataBuffer);
 	deleteAndZero(dev);
 
 }
diff --git a/Source/Processors/DataThreads/FPGAThread.h b/Source/Processors/DataThreads/FPGAThread.h
index 810ee5f5acf9eef39ad75c95c2025ad8abf20ba7..7bc294011efed3f30d1d44f3bbb5373a7d33fece 100644
--- a/Source/Processors/DataThreads/FPGAThread.h
+++ b/Source/Processors/DataThreads/FPGAThread.h
@@ -37,8 +37,6 @@
 
 /**
 
-  --UNDER CONSTRUCTION--
-
   Communicates with the custom acquisition board via an Opal Kelly FPGA.
 
   @see DataThread, SourceNode
@@ -54,11 +52,9 @@ public:
 	FPGAThread(SourceNode* sn);
 	~FPGAThread();
 
-	bool foundInputSource() {return true;}
-	bool startAcquisition();
-	bool stopAcquisition();
-	int getNumChannels() {return 32;}
-	float getSampleRate() {return 25000.0;}
+	bool foundInputSource(); // {return true;}
+	int getNumChannels();// {return 32;}
+	float getSampleRate();// {return 25000.0;}
 	
 private:
 
@@ -67,6 +63,12 @@ private:
 	char dll_date[32], dll_time[32];
 	UINT32 i;
 
+	bool initializeFPGA(okCFrontPanel*, char*);
+	bool closeFPGA();
+
+	bool startAcquisition();
+	bool stopAcquisition();
+
 	int m_u32SegmentSize;
 	
 	unsigned char pBuffer[50000];  // request a 1MB block of data
@@ -79,8 +81,7 @@ private:
 	int Ndatabytes;
 
 	bool updateBuffer();
-	bool initializeFPGA(okCFrontPanel*, char*);
-
+	
 	JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FPGAThread);
 };
 
diff --git a/Source/Processors/DataThreads/FileReaderThread.cpp b/Source/Processors/DataThreads/FileReaderThread.cpp
index f7f1aa4ee0908735d105622ec797489e90b91f79..242093003db23f285ebe4af87aff9af35aa72b23 100644
--- a/Source/Processors/DataThreads/FileReaderThread.cpp
+++ b/Source/Processors/DataThreads/FileReaderThread.cpp
@@ -45,7 +45,7 @@ FileReaderThread::~FileReaderThread() {
 
 	deleteAndZero(input);
 
-	deleteAndZero(dataBuffer);
+	//deleteAndZero(dataBuffer);
 
 }
 
diff --git a/Source/Processors/DataThreads/IntanThread.cpp b/Source/Processors/DataThreads/IntanThread.cpp
index 6a1c88c13de31f2f606a2aee489a19c082bb08a0..d43babe9b1066f4b9ac3fee12642b3855262fced 100644
--- a/Source/Processors/DataThreads/IntanThread.cpp
+++ b/Source/Processors/DataThreads/IntanThread.cpp
@@ -43,7 +43,7 @@ IntanThread::IntanThread(SourceNode* sn) : DataThread(sn),
 IntanThread::~IntanThread() 
 {
 	//closeUSB();
-	deleteAndZero(dataBuffer);
+	//deleteAndZero(dataBuffer);
 }
 
 int IntanThread::getNumChannels()