diff --git a/PacketLib.xcodeproj/project.pbxproj b/PacketLib.xcodeproj/project.pbxproj
index fc591a4c1f7b12d11d42174bcc0a5ca4f2857734..9ea928ad345389300da4fd00356093b37f2b95dc 100644
--- a/PacketLib.xcodeproj/project.pbxproj
+++ b/PacketLib.xcodeproj/project.pbxproj
@@ -150,6 +150,7 @@
 		DD8A42121A95C11700565702 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
 		DD8A42131A95C11700565702 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = "<group>"; };
 		DD8A42151A95C11700565702 /* packetlib_example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = packetlib_example.cpp; sourceTree = "<group>"; };
+		DD8A42161A95CE4500565702 /* rta_fadc_all.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = rta_fadc_all.xml; sourceTree = "<group>"; };
 		DDB3B86B18CA2F8700918955 /* ByteStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteStream.h; sourceTree = "<group>"; };
 		DDB3B86C18CA2F8700918955 /* ConfigurationFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigurationFile.h; sourceTree = "<group>"; };
 		DDB3B86D18CA2F8700918955 /* DataFieldHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataFieldHeader.h; sourceTree = "<group>"; };
@@ -317,6 +318,7 @@
 		DD8A42141A95C11700565702 /* xml */ = {
 			isa = PBXGroup;
 			children = (
+				DD8A42161A95CE4500565702 /* rta_fadc_all.xml */,
 				DD8A42151A95C11700565702 /* packetlib_example.cpp */,
 			);
 			path = xml;
diff --git a/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate b/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate
index 4e0cc302b41156a28f35e8ab4d5952c4598afad2..ce3ea1fcf54cb648d3c7f320a1ee1e1ec40ea1ba 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/examples/xml/packetlib_example.cpp b/examples/xml/packetlib_example.cpp
index 2894d19151b975a9416cb459a76a9189b187ec08..fe5d3da285c4c6db74dc1322561e947c21b2bf63 100644
--- a/examples/xml/packetlib_example.cpp
+++ b/examples/xml/packetlib_example.cpp
@@ -36,12 +36,12 @@ int main(int argc, char* argv[])
 	try {
 		packetType = ps.getPacketType("triggered_telescope1_30GEN");
 
-		PacketLib::Field* apid = packetType->getPacketHeader()->getField("APID");
+		PacketLib::Field* apid = packetType->pheader()->getField("APID");
 		std::cout << apid->getType() << std::endl;
 		//assert(apid->getType() == PacketLib::LogicalFieldDataType::UINT11);
 		//assert(apid->getName().compare("APID") == 0);
 	
-		PacketLib::Field* arrayID = packetType->getPacketDataFieldHeader()->getField("ArrayID");
+		PacketLib::Field* arrayID = packetType->dfheader()->getField("ArrayID");
 		//assert(arrayID->getType() == PacketLib::LogicalFieldDataType::UINT16);
 		//assert(arrayID->getName().compare("ArrayID") == 0);
 		
@@ -59,23 +59,24 @@ int main(int argc, char* argv[])
 		PacketLib::ByteStreamPtr rawPacket = rawPackets.getNext();
 		PacketLib::Packet* packet = ps.getPacket(rawPacket);
 		
-		//PacketLib::Field* blockfield = packet->getPacketSourceDataField()->getBlock(0)->getField("FADC00");
+		//PacketLib::Field* blockfield = packet->sdf()->getBlock(0)->getField("FADC00");
 		//assert(blockfield->getType() == PacketLib::LogicalFieldDataType::UINT16);
 
 
 		// use reflection interface to read content
-		uint16_t apid = packet->getPacketHeader()->getFieldValue("APID");
-		uint16_t arrayID = packet->getPacketDataFieldHeader()->getFieldValue("ArrayID");
-		uint16_t npixels = packet->getPacketSourceDataField()->getFieldValue("Number of pixels");
-		uint16_t nsamples = packet->getPacketSourceDataField()->getFieldValue("Number of samples");
+		uint16_t apid = packet->pheader()->getFieldValue("APID");
+		uint16_t arrayID = packet->dfheader()->getFieldValue("ArrayID");
+		uint16_t npixels = packet->sdf()->getFieldValue("Number of pixels");
+		uint16_t nsamples = packet->sdf()->getFieldValue("Number of samples");
 
 		std::cout << apid << " " << arrayID << " " << npixels << " " << nsamples << std::endl;
 		
 
 		//get each single pixel as a 1-dimensional array
+		
 		for(unsigned int j=0; j<npixels; j++) {
 			
-			uint16_t* pix = (uint16_t*) packet->getPacketSourceDataField()->getBlock(j)->getByteStream()->getStream();
+			uint16_t* pix = (uint16_t*) packet->sdf()->getBlock(j)->getBytes();
 			for(uint16_t sample=0; sample<nsamples; sample++)
 				cout << pix[sample] << " ";
 			cout << endl;
@@ -85,7 +86,7 @@ int main(int argc, char* argv[])
 		//access to each single sample
 		for(uint16_t pixel=0; pixel<npixels; pixel++) {
 			for(uint16_t sample=0; sample<nsamples; sample++) {
-				cout << packet->getPacketSourceDataField()->getBlock(pixel)->getFieldValue(sample) << " ";
+				cout << packet->sdf()->getBlock(pixel)->getFieldValue(sample) << " ";
 			}
 			cout << endl;
 		}
diff --git a/include/Packet.h b/include/Packet.h
index 973ba0790a66448681478cb42e0329e14279749b..a736ddb099577557aedbb3980c63830b68451c9f 100644
--- a/include/Packet.h
+++ b/include/Packet.h
@@ -135,15 +135,27 @@ public:
 	///Get the header
 	PacketHeader* getPacketHeader();
 	
+	///Get the header
+	PacketHeader* pheader();
+	
 	///Get the data field header
 	DataFieldHeader* getPacketDataFieldHeader();
 	
+	///Get the data field header
+	DataFieldHeader* dfheader();
+	
 	///Get the source data field
 	SourceDataField* getPacketSourceDataField();
 	
+	///Get the source data field
+	SourceDataField* sdf();
+	
 	///Get the tail
 	PartOfPacket* getPacketTail();
 	
+	///Get the tail
+	PartOfPacket* tail();
+	
 	/// Gets the dimension in byte of the current packet (header + datafield (data field header + sdf + tail)
     dword size();
 	
diff --git a/include/PartOfPacket.h b/include/PartOfPacket.h
index 27f6423384746c6afcffbb54d5f2c1e614b9a648..7155719c9ceeb506a7ab930b66ccfdb9e6438d68 100644
--- a/include/PartOfPacket.h
+++ b/include/PartOfPacket.h
@@ -338,6 +338,12 @@ public:
     {
     	return stream;
     }
+	
+	/// Get the current array of bytes from ByteStream
+	virtual byte* getBytes()
+	{
+		return stream->getStream();
+	}
 
     virtual void memByteStream(ByteStreamPtr stream);
 
diff --git a/src/Packet.cpp b/src/Packet.cpp
index aa317f0bd43dda2975f290e90c6911cce4832641..33bcd71e45fc096ef0d6b313b32efd94d5e8ea20 100644
--- a/src/Packet.cpp
+++ b/src/Packet.cpp
@@ -1166,6 +1166,10 @@ PacketHeader* Packet::getPacketHeader() {
 	}
 	return header;
 }
+	
+PacketHeader* Packet::pheader() {
+	return getPacketHeader();
+}
 
 
 DataFieldHeader* Packet::getPacketDataFieldHeader() {
@@ -1176,6 +1180,9 @@ DataFieldHeader* Packet::getPacketDataFieldHeader() {
 	return dataField->getPacketDataFieldHeader();
 }
 
+DataFieldHeader* Packet::dfheader() {
+	return getPacketDataFieldHeader();
+}
 
 
 SourceDataField* Packet::getPacketSourceDataField() {
@@ -1185,6 +1192,10 @@ SourceDataField* Packet::getPacketSourceDataField() {
 	}
 	return dataField->getPacketSourceDataField();
 }
+	
+SourceDataField* Packet::sdf() {
+	return getPacketSourceDataField();
+}
 
 
 PartOfPacket* Packet::getPacketTail() {
@@ -1194,6 +1205,10 @@ PartOfPacket* Packet::getPacketTail() {
 	}
 	return dataField->getPacketTail();
 }
+	
+PartOfPacket* Packet::tail() {
+	return getPacketTail();
+}
 
 ByteStreamPtr Packet::getData() {
 	//ALGORITHM FOR AUTOMATIC DECOMPRESSION: NOT IMPLEMENTED NOW. TODO