diff --git a/drv/b15f.cpp b/drv/b15f.cpp
index edc8c1c..249efec 100644
--- a/drv/b15f.cpp
+++ b/drv/b15f.cpp
@@ -104,200 +104,121 @@ bool B15F::testIntConv()
 
 std::vector<std::string> B15F::getBoardInfo(void)
 {
-	try
+	std::vector<std::string> info;
+	
+	usart.writeByte(RQ_INFO);
+	
+	uint8_t n = usart.readByte();
+	while(n--)
 	{
-		std::vector<std::string> info;
+		uint8_t len = usart.readByte();			
+		std::string str;
 		
-		usart.writeByte(RQ_INFO);
-		uint8_t n = usart.readByte();
-		while(n--)
-		{
-			uint8_t len = usart.readByte();			
-			std::string str;
+		while(len--)
+			str += static_cast<char>(usart.readByte());
 			
-			while(len--)
-				str += static_cast<char>(usart.readByte());
-				
-			info.push_back(str);
-		}
-		
-		uint8_t aw = usart.readByte();
-		
-		if(aw != MSG_OK)
-			throw DriverException("Board Info fehlerhalft");
-		
-		return info;
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return getBoardInfo();
+		info.push_back(str);
 	}
+	
+	uint8_t aw = usart.readByte();	
+	if(aw != MSG_OK)
+		throw DriverException("Board Info fehlerhalft");
+	
+	return info;
 }
 
 bool B15F::digitalWrite0(uint8_t port)
 {
-	try
-	{
-		usart.writeByte(RQ_BA0);
-		usart.writeByte(port);
-		
-		uint8_t aw = usart.readByte();	
-		return aw == MSG_OK;
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return digitalWrite0(port);
-	}
+	usart.writeByte(RQ_BA0);
+	usart.writeByte(port);
+	
+	uint8_t aw = usart.readByte();	
+	return aw == MSG_OK;
 }
 
 bool B15F::digitalWrite1(uint8_t port)
 {
-	try
-	{
-		usart.writeByte(RQ_BA1);
-		usart.writeByte(port);
-		
-		uint8_t aw = usart.readByte();	
-		return aw == MSG_OK;
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return digitalWrite1(port);
-	}
+	usart.writeByte(RQ_BA1);
+	usart.writeByte(port);
+	
+	uint8_t aw = usart.readByte();	
+	return aw == MSG_OK;
 }
 
 uint8_t B15F::digitalRead0()
 {
-	try
-	{
-		usart.writeByte(RQ_BE0);
-		return usart.readByte();
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return digitalRead0();
-	}
+	usart.writeByte(RQ_BE0);
+	return usart.readByte();
 }
 
 uint8_t B15F::digitalRead1()
 {
-	try
-	{
-		usart.writeByte(RQ_BE1);
-		return usart.readByte();
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return digitalRead1();
-	}
+	usart.writeByte(RQ_BE1);
+	return usart.readByte();
 }
 
 bool B15F::analogWrite0(uint16_t value)
 {
-	try
-	{
-		usart.writeByte(RQ_AA0);
-		delay_ms(1);
-		usart.writeInt(value);
-		delay_ms(1);
-		
-		uint8_t aw = usart.readByte();	
-		return aw == MSG_OK;
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return analogWrite0(value);
-	}
+	usart.writeByte(RQ_AA0);
+	usart.writeInt(value);
+	
+	uint8_t aw = usart.readByte();	
+	return aw == MSG_OK;
 }
 
 bool B15F::analogWrite1(uint16_t value)
 {
-	try
-	{
-		usart.writeByte(RQ_AA1);
-		usart.writeInt(value);
-		
-		uint8_t aw = usart.readByte();	
-		return aw == MSG_OK;
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return analogWrite1(value);
-	}
+	usart.writeByte(RQ_AA1);
+	usart.writeInt(value);
+	
+	uint8_t aw = usart.readByte();	
+	return aw == MSG_OK;
 }
 
 uint16_t B15F::analogRead(uint8_t channel)
 {
-	try
-	{
-		usart.writeByte(RQ_ADC);
-		delay_ms(1);
-		usart.writeByte(channel);
-		return usart.readInt();
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return analogRead(channel);
-	}
+	usart.writeByte(RQ_ADC);
+	usart.writeByte(channel);
+	return usart.readInt();
 }
 
 bool B15F::analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count)
 {
+	usart.writeByte(RQ_ADC_DAC_STROKE);
+	usart.writeByte(channel_a);
+	usart.writeByte(channel_b);
+	usart.writeInt(start);
+	usart.writeInt(static_cast<uint16_t>(delta));
+	usart.writeInt(count);
+	uint8_t aw = usart.readByte();
 	
-	discard();
-	
-	try
+	if(aw != MSG_OK)
 	{
-		usart.writeByte(RQ_ADC_DAC_STROKE);
-		usart.writeByte(channel_a);
-		usart.writeByte(channel_b);
-		usart.writeInt(start);
-		usart.writeInt(static_cast<uint16_t>(delta));
-		usart.writeInt(count);
-		uint8_t aw = usart.readByte();
+		throw DriverException("Out of sync");
+	}
+	
+	uint8_t block[5]; // 4 Datenbyte + crc	
+	for(uint16_t i = 0; i < count; i++)
+	{
+		bool crc_ok = usart.readBlock(&block[0], 0);
 		
-		if(aw != MSG_OK)
+		if (!crc_ok)
 		{
-			std::cout << PRE << "Out of sync" << std::endl;
+			std::cout << PRE <<  "bad crc" << std::endl;
 			return analogSequence(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count);
 		}
 		
-		uint8_t block[5]; // 4 Datenbyte + crc	
-		for(uint16_t i = 0; i < count; i++)
-		{
-			bool crc_ok = usart.readBlock(&block[0], 0);
-			
-			if (!crc_ok)
-			{
-				std::cout << PRE <<  "bad crc" << std::endl;
-				return analogSequence(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count);
-			}
-			
-			
-			buffer_a[offset_a + i] = ((uint16_t) block[0]) | (((uint16_t) block[1]) << 8);
-			buffer_b[offset_b + i] = ((uint16_t) block[2]) | (((uint16_t) block[3]) << 8);
-		}
 		
-		aw = usart.readByte();		
-		if(aw == MSG_OK)
-			return aw;
-		
-		std::cout << PRE <<  "Da ging etwas verloren" << std::endl;
-		return analogSequence(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count);
-	}
-	catch(DriverException& de)
-	{
-		reconnect();
-		return analogSequence(channel_a, buffer_a, offset_a, channel_b, buffer_b, offset_b, start, delta, count);
+		buffer_a[offset_a + i] = ((uint16_t) block[0]) | (((uint16_t) block[1]) << 8);
+		buffer_b[offset_b + i] = ((uint16_t) block[2]) | (((uint16_t) block[3]) << 8);
 	}
+	
+	aw = usart.readByte();		
+	if(aw == MSG_OK)
+		return aw;
+	
+	std::cout << PRE <<  "Da ging etwas verloren" << std::endl;
+	
 }
 
 void B15F::delay_ms(uint16_t ms)
diff --git a/drv/b15f.o b/drv/b15f.o
index 5b6d8ec..947203e 100644
Binary files a/drv/b15f.o and b/drv/b15f.o differ
diff --git a/main b/main
index 36cd534..2e92a82 100755
Binary files a/main and b/main differ