diff --git a/applications/lofar2/doc/prestudy/station2_sdp_icd.txt b/applications/lofar2/doc/prestudy/station2_sdp_icd.txt
index 5664d46548ab200ce63c8985bad70fbb013624f8..679e720ba482e655210ac304238e9b524fc933c2 100755
--- a/applications/lofar2/doc/prestudy/station2_sdp_icd.txt
+++ b/applications/lofar2/doc/prestudy/station2_sdp_icd.txt
@@ -22,14 +22,22 @@ ICD interface types:
 
 ICD template:
 An interface is an agreement between the two interfacing products.
-The interface agreement leads to requirements in the SRS of the interfacing products. The ICD is organised per interface type.
+The interface agreement leads to requirements in the SRS of the interfacing products.
+The ICD is organised per interface type.
 An definition is a block of facts that can be referred to from one or more interfaces.
 Each L# level has a section header in the ICD.
 Within the level there are interfaces that describe the interface only at that level.
 The lowest level is reach when the interface description is sufficient to implement it.
-From top L# level to implementation L# level the ICD should read like a document. Per level the interface agreements provide more detail and follow the PBS.
-Eye opener: Hence the ICD is like a normal written document, the difference is that all sections are captured by numbered interfaces and definitions in Polarion, so that they can be traced and referred to.
-The template should only contain the structure and hidden information for the editor. The read only text should only contain a link to the ICD general explanations, to ensure that nearly all text is manually written tekst.
+From top L# level to implementation L# level the ICD should read like a document.
+Per level the interface agreements provide more detail and follow the PBS.
+
+Eye opener: Hence the ICD is like a normal written document, the difference is that all sections
+are captured by numbered interfaces and definitions in Polarion, so that they can be traced and
+referred to.
+
+The template should only contain the structure and hidden information for the editor. The read
+only text should only contain a link to the ICD general explanations, to ensure that nearly all
+text is manually written tekst.
 
 ###################################################################################################
 # Timestamps
@@ -322,56 +330,33 @@ The total number of streams to CEP then becomes NOF_BEAMSETS * NOF_LANES.
        - rather than transporting p, q for R_os = p/q
        - the f_adc and fsub_type are in the header, because this information is sufficent to know the subband
          frequency grid (f_sub = f_adc / N_fft = 195312.5 or 156250 Hz) and the subband sample rate (R_os * f_sub).
-  . 1b data_flag: 0 = beamlet data ok, 1 = beamlet data disturbed, due to repositioning of beam [LOFAR2-3123]
-    1b payload_error, 0 = payload data is ok, 1 one or more blocks in payload have data errors, indicating
+  . 1b payload_error, 0 = payload data is ok, 1 one or more blocks in payload have data errors, indicating
        some problem at Station (purpose: fault analysis)
        - a single payload error bit means that all blocks in the payload get discarded if only only block
          has an error.
        - no need for indicator bit per block, assuming errors are rare and will result in loss of
          multiple blocks anyway
-  . 6b reserved (= 0)
+  . 1b repositioning_flag: 0 = beamlet data ok, 1 = beamlet data disturbed, due to repositioning of beam [LOFAR2-3123]
+  . 4b beamlet_width in number of bits
+       - Instead of BM = beamlet mode
+       - Default 8 for W_beamlet = 8 bit
+       - Use 0 bit to represent 16b mode like in LOFAR1, if necessary
   . 5b pn_id, index of the PN FPGA on UniBoard2 in Station SDP that offloaded the data (purpose: fault analysis)
        - Instead of RSP_ID in LOFAR1
        - 16 FPGAs for LBA, 16 for HBA in International Station, so maximum index 31 fits in 5 bits
        - The PN ID is useful for fault diagnoses, to know the PN in SDP from which the data originated.
 
-- 2 Byte, BEAMLET_INFO
-  . 4b beamlet_width in number of bits
-       - Instead of BM = beamlet mode
-       - Default 8 for W_beamlet = 8 bit
-       - Use 0 bit to represent 16b mode like in LOFAR1, if necessary
-  . 12b beamlet_scale
-    - try to fit beamlet_width and beamlet_scale in 2 Bytes
+
+- 5 Byte, reserved (= 0)
+
+- 2 Byte, beamlet_scale
     - In SDP the beamlet beamlet_scale function extracts the lowest 8b from the 18b beamlet sum, after having
-      multiplied the beamlet sum by 1/beamlet_scale. Same value for all beamlets.
-    - norm = 2**12 / 1024 = 4 to support beamlet_scale values with a resolution of 1/norm = 0.25
-    - 18b --> 8b, beamlet_scale = 1 * norm yields lowest bits, beamlet_scale = 1024 (-1 = 10b) yields highest bits
-    - 18b --> 4b, beamlet_scale = 1 * norm yields lowest bits, beamlet_scale = 4096 (-1 = 12b) yields highest bits
-    - beamlet_scale is typically proportional to sqrt(nof antenna in beam) to maintain sensistivity
-    - larger beamlet_scale values provide more dynamic range, but less sensitivity. More dynamic range only makes
-          sense in 8b mode (or 16b mode, but not in 4b or 2b mode), therefore given the 18b beamlet sum the maximum
-          beamlet_scale = 1024 * norm = 2**10 * 2**2 = 2**12. In practise the dynamic range of beamlet_scale can
-          be less to have more resolution for the norm. The beamlet_scale needs at to be at least sqrt(192) = 13.4
-          to support scaling beamlets for a beam with all antenna inputs. For RFI the beam add coherently, so then
-          beamlet_scale needs to be at least 192. Therefore use 8b.4b for beamlet scale, so norm = 16
-    - beamlet_scale = sqrt  12 * norm = 1    * norm =  16 --> suitable if only one antenna input was used for the beamlet
-                      sqrt  12 * norm = 3.46 * norm =  55
-                      sqrt  24 * norm = 4.9  * norm =  78
-                      sqrt  48 * norm = 6.93 * norm = 111
-                      sqrt  96 * norm = 9.8  * norm = 157
-                      sqrt 192 * norm = 13.4 * norm = 222 --> to account for number of antennas in beam
-    - Internally the beamlet beamlet_scale function uses an 18b unsigned representation of the 1/beamlet_scale fraction,
-      so 2**18 / beamlet_scale. This yields:
-        beamlet_scale = 1       * norm --> 16384
-        beamlet_scale = sqrt 96 * norm -->  1670
-        beamlet_scale = 256     * norm -->    64
-      After mutliplying the 18b.0b beamlet_sum by 1b.12b 1/beamlet_scale the result is a 24b.12b value that is rounded and 
-      clipped to output the 8b beamlets.
+      multiplied the beamlet sum by 1/beamlet_scale.
+    - Same value for all beamlets.
+      
+The internal beamlet data in SDPFW is scaled by the beamlet_scale factor, before it is requantized to W_beamlet = 8 bit beamlet data output to CEP. The beamlet_scale factor is typically equal to 1/sqrt(N_ant), where N_ant is the number of antennas in the beam, to preserve the beamlet sensitivity while maximizing the dynamic range, see section 6.1.5 in [RD-8]. The beamlet_scale factor is represented in 16 bit fixed point format with no sign bit, m = 1 mantissa bit and a f = 15 bit fraction. E.g. the fixed point beam_scale value is round(2**f) / sqrt(N_ant)) = 2**15 for N_ant = 1 and 3344 for N_ant = 96. The beamlet requantization does not introduce a DC bias and the beamlets are clipped between -127 and +127.
       
         
-
-- 1 Byte, reserved (= 0)
-
 - 2 Byte, BEAMLET_INDEX of first beamlet in the payload
   . sdp_beamset_index * nof_beamlets_per_set
   . beamset_index = 0 in range(nof_beamsets).
@@ -498,6 +483,20 @@ d) OPC-UA representation (by OPC-UA servers)
     . Transient buffer
     . Transient detection
 
+3) Statistics UDP offload
+
+Pre conditions:
+
+- Use an application header size that is a multiple of 4 bytes, to fit the internal data width of the SDP FW (4 byte for 1GbE, 8 byte for 10GbE).
+- Use similar format as for beamlet data output to CEP.
+- Use the same application header format for all three types of statistics (SST, BST, XST), with some differences per field
+
+Remarks:
+
+Do not define a field for the subband RF frequency. For SST this can be derived from subband index and antenna_band and RCU2 mode. For BST each beamlet can have any subband RF frequency, so this is not possible to convey with a single field of only a few bytes.
+Do not support more than one block per packet, because for SST and BST the payload is sufficiently large. For XST is convenient to have only one crosslet per packet, because then its subband index can be set in the header. Furthermore the number of statistics packets per second is relatively low.
+
+Statistics packet fields format: See ICD SC-SDP in Polarion
 
 
 ###################################################################################################