diff --git a/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4.vhd b/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4.vhd
index a3b5489114b49f33a12dc68e5bcc38fa802e1b59..35e61c8573fdeef0d3ce44b93fa807d959266a2d 100644
--- a/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4.vhd
+++ b/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4.vhd
@@ -253,8 +253,10 @@ BEGIN
   -----------------------------------------------------------------------------
   u_arts_unb1_sc4_processing: ENTITY work.arts_unb1_sc4_processing
   GENERIC MAP (
-    g_nof_telescopes => 12,
-    g_nof_tabs       => 1 
+    g_sim            => g_sim,
+    g_technology     => c_tech_select_default,
+    g_nof_telescopes => c_nof_telescopes,
+    g_nof_tabs       => c_nof_tabs 
   )
   PORT MAP (
     dp_clk      => dp_clk,
@@ -268,10 +270,14 @@ BEGIN
     src_out_arr => arts_unb1_sc4_processing_src_out_arr
   );
 
+  arts_unb1_sc4_processing_snk_in_arr <= arts_unb1_sc4_input_src_out_arr;
+  arts_unb1_sc4_output_snk_in_arr <= arts_unb1_sc4_processing_src_out_arr;
+
+
   -----------------------------------------------------------------------------
   -- Output reordering & packetizing stage
   -----------------------------------------------------------------------------
-  u_arts_unb1_sc4_output: ENTITY arts_unb1_sc4_bg_lib.arts_unb1_sc4_output
+  u_arts_unb1_sc4_output: ENTITY arts_unb1_sc4_lib.arts_unb1_sc4_output
   GENERIC MAP (
     g_sim                             => g_sim,
     g_override_payload_data           => FALSE,
diff --git a/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4_processing.vhd b/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4_processing.vhd
index 7fab99f4446dca08ac17e069dd7c759d8f463053..e202299c3db8b5bf5702df50cf4fc93d4c56904f 100644
--- a/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4_processing.vhd
+++ b/applications/arts/designs/arts_unb1_sc4/src/vhdl/arts_unb1_sc4_processing.vhd
@@ -41,6 +41,8 @@ LIBRARY bf_lib;
 
 ENTITY arts_unb1_sc4_processing IS --FIXME Given the generics, this could be used for SC3 as well (8 dishes, less TABs). Rename/move required?
   GENERIC (
+    g_sim               : BOOLEAN := FALSE;
+    g_technology        : NATURAL := c_tech_select_default;
     g_nof_telescopes    : NATURAL := 12;
     g_nof_polarizations : NATURAL := 2;
     g_nof_tabs          : NATURAL := 1;--FIXME 1 TAB = 1 bf_unit first. 12 later.
@@ -125,6 +127,7 @@ ARCHITECTURE str OF arts_unb1_sc4_processing IS
   CONSTANT c_bf_bf_weights_file_name : STRING := "hex/bf_weights";
   CONSTANT c_bf_ss_wide_file_prefix  : STRING := "hex/bf_ss_wide";
 
+
   SIGNAL ram_bf_ss_ss_wide_mosi : t_mem_mosi; --FIXME Move to entity I/O later.
   SIGNAL ram_bf_ss_ss_wide_miso : t_mem_miso;
   SIGNAL ram_bf_weights_mosi    : t_mem_mosi;
@@ -141,6 +144,40 @@ ARCHITECTURE str OF arts_unb1_sc4_processing IS
   SIGNAL bf_bst_src_out_arr     : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
   SIGNAL bf_qua_src_out_arr     : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
 
+  -- Signals and Constants for the IQUV after the TABs
+
+  CONSTANT c_nof_int_iquv       : NATURAL := g_nof_fft_bins/4;
+  CONSTANT c_in_data_w_iquv     : NATURAL := 12;
+  CONSTANT c_out_data_w_iquv    : NATURAL := 8;
+  CONSTANT c_use_accum_iquv     : BOOLEAN := TRUE;    -- do the accumulation in the IQUV module
+
+  SIGNAL iquv_i_out_arr     : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
+  SIGNAL iquv_q_out_arr     : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
+  SIGNAL iquv_u_out_arr     : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
+  SIGNAL iquv_v_out_arr     : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
+  SIGNAL iquv_src_out_arr   : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0);
+
+  -- Signals and Constants for the IQUV IAB
+
+  CONSTANT c_nof_int_iquv_iab   : NATURAL := g_nof_fft_bins/4;
+  CONSTANT c_in_data_w_iquv_iab : NATURAL := 12;
+  CONSTANT c_out_data_w_iquv_iab: NATURAL := 8;
+  CONSTANT c_use_accum_iquv_iab : BOOLEAN := TRUE;    -- do the accumulation after adding the 12 telescope streams
+
+  SIGNAL iquv_iab_i_out         : t_dp_sosi;
+  SIGNAL iquv_iab_q_out         : t_dp_sosi;
+  SIGNAL iquv_iab_u_out         : t_dp_sosi;
+  SIGNAL iquv_iab_v_out         : t_dp_sosi;
+  SIGNAL iquv_iab_src_out_arr   : t_dp_sosi_arr(g_nof_tabs-1 DOWNTO 0)
+
+  -- constants used to connect different output configurations
+
+  CONSTANT c_output_tab_only    : NATURAL := 0;
+  CONSTANT c_output_tab_iquv    : NATURAL := 1;
+  CONSTANT c_output_iquv_iab_all: NATURAL := 2;
+  CONSTANT c_output_select      : NATURAL := c_output_iquv_iab_to_all;  -- Make your choice here
+
+
 
 BEGIN
 
@@ -285,18 +322,89 @@ BEGIN
     out_qua_sosi_arr    => bf_qua_src_out_arr
   );     
 
-  src_out_arr <= bf_raw_src_out_arr; --FIXME add IAB as MS stream later.
+
 
   -------------------------------------------------------------------------------
   -- IQUV calculation of TABs
   -------------------------------------------------------------------------------
-  --FIXME
+
+  gen_iquv : FOR i IN 0 TO g_nof_tabs-1 GENERATE
+    u_iquv : ENTITY work.iquv
+    GENERIC MAP (
+      g_sim              => g_sim,
+      g_technology       => g_technology,
+      g_use_accum        => c_use_accum_iquv,
+      g_nof_int          => g_nof_int_iquv,
+      g_in_data_w        => g_in_data_w_iquv,
+      g_out_data_w       => g_out_data_w_iquv
+    )
+    PORT MAP (
+      dp_rst     => dp_rst,
+      dp_clk     => dp_clk,
+      in_complex => bf_raw_src_out_arr(i),
+      i_out      => iquv_i_out_arr(i),
+      q_out      => iquv_q_out_arr(i),
+      u_out      => iquv_u_out_arr(i),
+      v_out      => iquv_v_out_arr(i)
+    );
+
+    iquv_src_out_arr(i).valid <= iquv_iab_i_out.valid;
+    iquv_src_out_arr(i).data(4*c_out_data_w_iquv-1 downto 0) <= iquv_v_out.data(c_out_data_w_iquv-1 downto 0)
+                                                                  & iquv_u_out.data(c_out_data_w_iquv-1 downto 0)
+                                                                  & iquv_q_out.data(c_out_data_w_iquv-1 downto 0)
+                                                                  & iquv_i_out.data(c_out_data_w_iquv-1 downto 0);
+  END GENERATE;
+
+
 
   -------------------------------------------------------------------------------
   -- IAB Beam Former + IAB IQUV calculation
   -------------------------------------------------------------------------------
   --FIXME
+  u_iquv_iab : ENTITY work.iquv_iab
+  GENERIC MAP (
+    g_sim              => g_sim,
+    g_technology       => g_technology,
+    g_use_accum        => c_use_accum_iquv_iab,
+    g_nof_streams      => c_nof_telescopes,
+    g_nof_int          => c_nof_int_iquv_iab,
+    g_in_data_w        => c_in_data_w_iquv_iab,
+    g_out_data_w       => c_out_data_w_iquv_iab
+  )
+  PORT MAP (
+    dp_rst         => dp_rst,
+    dp_clk         => dp_clk,
+    in_complex_arr => in_complex_arr,
+    i_out          => iquv_iab_i_out,
+    q_out          => iquv_iab_q_out,
+    u_out          => iquv_iab_u_out,
+    v_out          => iquv_iab_v_out
+  );
+
+  gen_iquv_iab_outputs : FOR i IN 0 TO g_nof_tabs-1 GENERATE
+    iquv_iab_src_out_arr(i).valid <= iquv_iab_i_out.valid;
+    iquv_iab_src_out_arr(i).data(4*c_out_data_w_iquv_iab-1 downto 0) <= iquv_iab_v_out.data(c_out_data_w_iquv_iab-1 downto 0)
+                                                                      & iquv_iab_u_out.data(c_out_data_w_iquv_iab-1 downto 0)
+                                                                      & iquv_iab_q_out.data(c_out_data_w_iquv_iab-1 downto 0)
+                                                                      & iquv_iab_i_out.data(c_out_data_w_iquv_iab-1 downto 0);
+  END GENERATE;
+
+
+
+  -------------------------------------------------------------------------------
+  -- Connect the outputs according to the selected configuration
+  -------------------------------------------------------------------------------
+
+  gen_output_tab_only : IF c_output_select = c_output_tab_only GENERATE
+    src_out_arr <= bf_raw_src_out_arr; 
+  END GENERATE;
 
+  gen_output_tab_iquv : IF c_output_select = c_output_tab_iquv GENERATE
+    src_out_arr <= iquv_src_out_arr; 
+  END GENERATE;
 
+  gen_output_iquv_iab_all : IF c_output_select = c_output_iquv_iab_all GENERATE
+    src_out_arr <= iquv_iab_src_out_arr; 
+  END GENERATE;
 
 END str;