diff --git a/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate b/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate
index 2851d8edaa65b98ce1ab649336cfd51153d3a7c7..0e85b5d212b1125aa5bea98a7ae4e4fb7c304d73 100644
Binary files a/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate and b/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/include/Packet.h b/include/Packet.h
index a14d20ce6d60dd0346c03fc85cf6ada01a051cf9..33739376f269911ff07524013e2e9bbf5cd78b69 100644
--- a/include/Packet.h
+++ b/include/Packet.h
@@ -60,20 +60,20 @@ public:
 	/// Decode the packet
     /// \param stream A pointer to the stream of byte, with prefix and packet
 	/// \param checkPacketLenght if true check the packet lenght and set the packet stream, if false do not check the packet lenght
-    virtual void decode(ByteStreamPtr stream, bool checkPacketLenght = false) throw(PacketException*);
+    virtual bool decode(ByteStreamPtr stream, bool checkPacketLenght = false);
 	
 	/// Decode the packet
     /// \param prefix A pointer to the stream of byte, with the prefix
 	/// \param packet A pointer to the stream of byte, with the packet
 	/// \param checkPacketLenght if true check the packet lenght and set the packet stream, if false do not check the packet lenght
-    virtual void decode(ByteStreamPtr prefix, ByteStreamPtr packet, bool checkPacketLenght = false) throw(PacketException*);
+    virtual bool decode(ByteStreamPtr prefix, ByteStreamPtr packet, bool checkPacketLenght = false);
 	
 	/// Decode the packet
     /// \param prefix A pointer to the stream of byte, with the prefix
 	/// \param packetHeader A pointer to the stream of byte, with the packet header
 	/// \param packetHeader A pointer to the stream of byte, with the packet data field
 	/// \param checkPacketLenght if true check the packet lenght and set the packet stream, if false do not check the packet lenght
-    virtual void decode(ByteStreamPtr prefix, ByteStreamPtr packetHeader, ByteStreamPtr packetDataField, bool checkPacketLenght = false) throw(PacketException*);
+    virtual bool decode(ByteStreamPtr prefix, ByteStreamPtr packetHeader, ByteStreamPtr packetDataField, bool checkPacketLenght = false);
 	
 	/// Verify the content of the packet (after the decode)
 	///\return true is the packet contained into the stream is recognized using identifiers.
diff --git a/src/Packet.cpp b/src/Packet.cpp
index 6c29eb94d620985d72ae30a60138cc1589888d48..83a417f5c868b2cd4b88376b1d36e04842fbef77 100644
--- a/src/Packet.cpp
+++ b/src/Packet.cpp
@@ -740,7 +740,7 @@ char* Packet::printPacketOutputStream()
 
 
 
-void Packet::decode(ByteStreamPtr stream, bool checkPacketLength) throw(PacketException*) {
+bool Packet::decode(ByteStreamPtr stream, bool checkPacketLength) {
 
 	//save a pointer to the current stream to avoid shareptr deallocation
 	this->stream = stream;
@@ -783,11 +783,11 @@ void Packet::decode(ByteStreamPtr stream, bool checkPacketLength) throw(PacketEx
 	}
 	//TODO OPTIMIZATION: set the followin method only when is needed
 	setByteStreamSections(); //10 per cent of time loss but safer
-	//return true;
+	return true;
 
 }
 
-void Packet::decode(ByteStreamPtr prefix, ByteStreamPtr packet, bool checkPacketLength) throw(PacketException*) {
+bool Packet::decode(ByteStreamPtr prefix, ByteStreamPtr packet, bool checkPacketLength) {
 	
 	this->stream = 0;
 	decodedPacketHeader = false;
@@ -814,16 +814,16 @@ void Packet::decode(ByteStreamPtr prefix, ByteStreamPtr packet, bool checkPacket
 	}
 	//TODO OPTIMIZATION: set the following method only when is needed
 	setByteStreamSections(); //10 per cent of time loss but safer
-	//return true;
+	return true;
 	
 }
 
 
 
-void Packet::decode(ByteStreamPtr prefix, ByteStreamPtr packetHeader, ByteStreamPtr packetDataField, bool checkPacketLenght) throw(PacketException*) {
+bool Packet::decode(ByteStreamPtr prefix, ByteStreamPtr packetHeader, ByteStreamPtr packetDataField, bool checkPacketLenght) {
 	//merge packetHeader and packetDataField
 	ByteStreamPtr tmpPacket = ByteStreamPtr(new ByteStream(packetHeader, packetDataField, 0));
-	decode(prefix, tmpPacket, checkPacketLenght);
+	return decode(prefix, tmpPacket, checkPacketLenght);
 	
 }