diff --git a/src/TIMIQLib.cpp b/src/TIMIQLib.cpp
index 19604a243efd1f1f5da0e59b6ec17e9600735b8d..7e2a2b25b2f5b30694c56752bf95c59dc647bd77 100644
--- a/src/TIMIQLib.cpp
+++ b/src/TIMIQLib.cpp
@@ -51,6 +51,7 @@ TIMIQLib::~TIMIQLib()
 	if (m_timiq_task)
 	{
 		m_timiq_task->exit();
+		delete m_timiq_task;
 		m_timiq_task = NULL;
 	}
 }
@@ -123,6 +124,7 @@ void TIMIQLib::data_end_task()
 		{
 			//std::cout <<"exit task done ..." <<std::endl;		
 			m_timiq_task->exit();
+			delete m_timiq_task;
 			m_timiq_task = NULL;
 			
 			CHECK_TIMIQ_HW;
@@ -189,6 +191,7 @@ void TIMIQLib::iVal_end_task()
 		{
 			//std::cout <<"exit task done ..." <<std::endl;		
 			m_timiq_task->exit();
+			delete m_timiq_task;
 			m_timiq_task = NULL;
 			
 			CHECK_TIMIQ_HW;
@@ -201,6 +204,7 @@ void TIMIQLib::iVal_end_task()
 		
 		//- destroy otherwise 
 		m_timiq_task->exit();
+		delete m_timiq_task;
 		m_timiq_task = NULL;
 	}
 	
@@ -254,6 +258,7 @@ void TIMIQLib::qVal_end_task()
 		{
 			//std::cout <<"exit task done ..." <<std::endl;		
 			m_timiq_task->exit();
+			delete m_timiq_task;
 			m_timiq_task = NULL;
 			
 			CHECK_TIMIQ_HW;
@@ -266,6 +271,7 @@ void TIMIQLib::qVal_end_task()
 		
 		//- destroy otherwise 
 		m_timiq_task->exit();
+		delete m_timiq_task;
 		m_timiq_task = NULL;
 	}
 	
@@ -319,6 +325,7 @@ void TIMIQLib::boardT_end_task()
 		{
 			//std::cout <<"exit task done ..." <<std::endl;		
 			m_timiq_task->exit();
+			delete m_timiq_task;
 			m_timiq_task = NULL;
 			
 			CHECK_TIMIQ_HW;
@@ -331,6 +338,7 @@ void TIMIQLib::boardT_end_task()
 		
 		//- destroy otherwise 
 		m_timiq_task->exit();
+		delete m_timiq_task;
 		m_timiq_task = NULL;
 	}