updated verilog structure