diff --git a/behavioural/ahb_out.sv b/behavioural/ahb_out.sv
index ba29b698ee2eedb62ea35c0a2dde9fcc359b72b7..e3b9de85321369681fb41b2be65bc210af2ccd6f 100644
--- a/behavioural/ahb_out.sv
+++ b/behavioural/ahb_out.sv
@@ -43,14 +43,14 @@ module ahb_out(
   //Non-AHB signals 
   input logic [9:0] pixel_x ,
   input logic [8:0] pixel_y ,
-
+  input logic [10:0] x1, x2, y1, y2, x3, y3,
   // AHB Signals from Slave to Master
   output logic [31:0] HRDATA,
   output HREADYOUT,
 
   //Non-AHB Signals
-  output logic pixel, 
-  output logic [8:0] x1, x2, y1, y2, x3, y3
+  output logic pixel
+
 );
 
 timeunit 1ns;
@@ -155,27 +155,14 @@ memory = '{307200{0}};
       pixel <= memory[pixel_address] ;
      end
           
+// Read not allowed
 
-
-  //read
-  always_comb
-    if ( ! read_enable )
-      // (output of zero when not enabled for read is not necessary
-      //  but may help with debugging)
-      HRDATA = '0;
-    else 
-      case (word_address)
-        0 : HRDATA = { 23'd0, x1 };
-        1 : HRDATA = { 23'd0, y1 };
-        2 : HRDATA = { 23'd0, x2 };
-        3 : HRDATA = { 23'd0, y2 };   
-        4 : HRDATA = { 23'd0, x3 };
-        5 : HRDATA = { 23'd0, y3 };                        
-        // unused address - returns zero
-        default : HRDATA = '0;
-      endcase
-  //Transfer Response
-  assign HREADYOUT = '1; //Single cycle Write & Read. Zero Wait state operations
+assign HRDATA = '0; // read is not permitted mode
+   
+    
+ 
+//Transfer Response
+  assign HREADYOUT = '1; //Single Cycle Wait State for Write
 
 
 endmodule
diff --git a/behavioural/ahb_pixel_memory.sv b/behavioural/ahb_pixel_memory.sv
deleted file mode 100644
index 37920028904aafe72ca046ffa0c5431e614291a8..0000000000000000000000000000000000000000
--- a/behavioural/ahb_pixel_memory.sv
+++ /dev/null
@@ -1,122 +0,0 @@
-// Example code for an M0 AHBLite System
-//  Iain McNally
-//  ECS, University of Soutampton
-//
-// This module is an AHB-Lite Slave containing a RAM
-// Since this loads a program it is for FPGA use only
-//
-// Number of addressable locations : 307200
-// Size of each addressable location : bits_per_pixel bits
-// Supported transfer sizes : Word
-// Alignment of base address : Word aligned
-//
-
-// Memory is synchronous which should suit block memory types
-//   Read takes 1 cycle
-//   Write takes 2 cycles (single wait state)
-//
-// Note this is not the most efficient design but works with
-//  Xilinx and Altera(Intel) FPGAs
-//
-
-
-`define STRINGIFY(x) `"x`"
-
-module ahb_pixel_memory #(
-  parameter MEMWIDTH = 22
-)(
-  //AHBLITE INTERFACE
-
-    //Slave Select Signal
-    input HSEL,
-    //Global Signals
-    input HCLK,
-    input HRESETn,
-    //Address, Control & Write Data
-    input HREADY,
-    input [31:0] HADDR,
-    input [1:0] HTRANS,
-    input HWRITE,
-    input [2:0] HSIZE,
-    input [31:0] HWDATA,
-    // Transfer Response & Read Data
-    output HREADYOUT,
-    output [31:0] HRDATA
-
-);
-
-timeunit 1ns;
-timeprecision 100ps;
-
-localparam No_Transfer = 2'b0;
-localparam bits_per_pixel = 1;
-
-// Memory Array
-  logic [bits_per_pixel-1:0] memory[0:307199];
-
-// other declarations
-  logic [31:0] data_from_memory, data_to_memory;
-  logic write_cycle, read_cycle;
-  logic [MEMWIDTH-2:0] word_address, saved_word_address;
-  logic [3:0] byte_select;
-
-
-//Generate the control signals here:
-
-  always_ff @(posedge HCLK, negedge HRESETn)
-    if (! HRESETn )
-      begin
-        write_cycle <= '0;
-        read_cycle <= '0;
-        saved_word_address <= '0;
-      end
-    else
-      begin
-        if ( HREADY && HSEL && (HTRANS != No_Transfer) )
-          begin
-            write_cycle <= HWRITE;
-            read_cycle <= ! HWRITE;
-            saved_word_address <= HADDR[MEMWIDTH:2];
-         end
-        else
-          begin
-            write_cycle <= '0;
-            read_cycle <= '0;
-         end
-      end
-
-  // the word address is available in the address phase
-  always_comb
-    if ( HREADY && HSEL && (HTRANS != No_Transfer) && ! write_cycle )
-      word_address = HADDR[MEMWIDTH:2];
-    else
-      word_address = saved_word_address;
-
-// model the memory here:
-
-  // read and write are both synchronous
-  // the code uses a simple format to ensure easy identification of RAM for synthesis
-  always_ff @(posedge HCLK)
-    begin
-      data_from_memory <= memory[word_address];
-      if ( write_cycle )
-        memory[word_address] <= data_to_memory;
-    end
-
-// deal with byte access here:
-
-  always_comb
-    if (write_cycle)
-      data_to_memory= HWDATA;
-    else
-      data_to_memory = '0;
-
-  // (output of zero when not enabled for read is not necessary but may help with debugging)
-  assign HRDATA = read_cycle ? data_from_memory : '0;
-
-
-//Transfer Response
-  assign HREADYOUT = ! write_cycle; //Single Cycle Wait State for Write
-
-
-endmodule
diff --git a/behavioural/arm_soc.sv b/behavioural/arm_soc.sv
index daef1056a08a3406269e6e505f9ed279c132b924..c3e0a6833de159d0e57970d859180948c8075f2c 100644
--- a/behavioural/arm_soc.sv
+++ b/behavioural/arm_soc.sv
@@ -4,10 +4,12 @@
 module arm_soc(
 
   input HCLK, HRESETn,
-  
+  input logic [9:0] pixel_x ,
+  input logic [8:0] pixel_y,
+  input logic [10:0] x1, x2, y1, y2, x3, y3, 	
   input [15:0] Switches, 
   input [1:0] Buttons, 
-  output logic [8:0] x1, x2, y1, y2,	
+  output logic pixel,
   output LOCKUP
 
 );
@@ -92,7 +94,7 @@ timeprecision 100ps;
     .HSEL(HSEL_DOUT),
     .HRDATA(HRDATA_DOUT), .HREADYOUT(HREADYOUT_DOUT),
 
-    .x1(x1), .x2(x2), .y1(y1), .y2(y2)
+    .x1(x1), .x2(x2), .y1(y1), .y2(y2), .x3(x3), .y3(y3) .pixel_x(pixel_x), .pixel_y(pixel_y) , .pixel(pixel)
 
   );
   
diff --git a/behavioural/de1_soc_wrapper.sv b/behavioural/de1_soc_wrapper.sv
index 16ab7467ad945ae618c32c03cdc26a7d81f840a2..d9eaacf7674c0fca2200573882443558df5577f9 100644
--- a/behavioural/de1_soc_wrapper.sv
+++ b/behavioural/de1_soc_wrapper.sv
@@ -29,20 +29,24 @@ timeprecision 100ps;
   localparam heartbeat_count_msb = 25; 
   
   
-  wire HCLK, HRESETn, LOCKUP, DataValid;
+  wire HCLK, HRESETn, LOCKUP;
   wire [1:0] Buttons;
   wire [15:0] Switches;
-  logic[8:0] x1,x2,y1,y2 ;
+  logic pixel ;
+  logic [9:0] pixel_x ;
+  logic [8:0] pixel_y ; 
   assign Switches = { 6'd0, SW }; // DE1-SoC has just 10 switches
   
   assign Buttons = ~KEY[1:0];
  
-  arm_soc soc_inst(.HCLK, .HRESETn, .x1(x1), .x2(x2), .y1(y1), .y2(y2), .Switches, .Buttons, .LOCKUP);
-  razzle raz_inst  (.CLOCK_50(CLOCK_50), 
-		 .KEY(KEY),
-		.x1(x1), .x2(x2), .y1(y1), .y2(y2),
+  arm_soc soc_inst(.HCLK, .HRESETn, .Switches, .pixel(pixel), .pixel_x(pixel_x), .pixel_y(pixel_y), .Buttons, .LOCKUP);
+  
+  razzle raz_inst  (
+        .CLOCK_50(CLOCK_50), .KEY(KEY), .pixel_x(pixel_x), .pixel_y(pixel_y), .pixel(pixel), 
         .VGA_R(VGA_R),.VGA_G(VGA_G),.VGA_B(VGA_B), 
-         .VGA_HS(VGA_HS),.VGA_VS(VGA_VS), .VGA_CLK(VGA_CLK), .VGA_BLANK_N(VGA_BLANK_N)); 
+        .VGA_HS(VGA_HS),.VGA_VS(VGA_VS), .VGA_CLK(VGA_CLK), 
+	.VGA_BLANK_N(VGA_BLANK_N)
+	); 
 
 
   // Drive HRESETn directly from active low CPU KEY[2] button
@@ -77,12 +81,7 @@ timeprecision 100ps;
   assign HEX0 = (heartbeat) ? 7'b0100011 : '1;
 
   // HEX1 is DataValid
-  assign HEX1 = ~{!DataValid&&!LOCKUP,
-                  !DataValid&&!LOCKUP,
-                  !DataValid&&!LOCKUP,
-                   !LOCKUP,
-                   !LOCKUP,
-                  !DataValid&&!LOCKUP };
+  assign HEX1 = ~{!LOCKUP};
 
   // running shows as r on HEX2
   assign HEX2 = ~{1'b0,running,1'b0,running, 4'b000 };
diff --git a/behavioural/razzle.sv b/behavioural/razzle.sv
index a3391fca83e476dd6d8a26c0fbddcaa9e48f76c6..491c6684680849a984ff711133dd72eb85bee726 100644
--- a/behavioural/razzle.sv
+++ b/behavioural/razzle.sv
@@ -10,10 +10,10 @@ module razzle (
 	input logic CLOCK_50, 
 	input logic [3:0] KEY,
 	input logic  pixel,
-    	output logic [7:0] VGA_R,VGA_G,VGA_B, 
+    output logic [7:0] VGA_R,VGA_G,VGA_B, 
 	output logic [9:0] pixel_x,
 	output logic [8:0] pixel_y ,
-    	output logic VGA_HS,VGA_VS, VGA_CLK, VGA_BLANK_N); 
+    output logic VGA_HS,VGA_VS, VGA_CLK, VGA_BLANK_N); 
        		 
 // Video Display Signals    
 logic [10:0] H_count,V_count;