anchor.diff:  -spec delete(block_state()) -> ok.
   
   delete({_Config, _Inputs, _Outputs, Private}) ->
  + 
  +  I2cRef = block_utils:get_value(Private, i2c_ref),
  +  % Turn off the display 
  +  shutdown_led_driver(I2cRef),  
  +  
     % Close the I2C Channel
  -  I2cRef = block_utils:get_value(Private, i2c_ref), 
     i2c:stop(I2cRef),
     ok.
   
  
positive.code: 
  initialize({Config, Inputs, Outputs, Private}) ->
  
    PrivateX = block_utils:add_attribute(Private, {i2c_ref, empty}),
    PrivateY = block_utils:add_attribute(PrivateX, {ht16k33_disp_buff, empty}),
    
    % Get the the I2C Address of the display 
    % TODO: Check for valid I2C Address
    I2cDevice = block_utils:get_value(Config, i2c_device),
    I2cAddr = block_utils:get_value(Config, i2c_addr),
  	    
    case ht16k33_led_driver:init(I2cDevice, I2cAddr) of
      {ok, I2cRef, DisplayBuffer} ->
        Status = initialed,
        Value = 0, 
        PrivateZ = block_utils:set_values(PrivateY, 
                            [{i2c_ref, I2cRef}, {ht16k33_disp_buff, DisplayBuffer}]);      
      {error, Reason} ->
        error_logger:error_msg("Error: ~p intitiating I2C Address: ~p~n", 
                                [Reason, I2cAddr]),
        Status = proc_error,
        Value = not_active,
        PrivateZ = PrivateY
    end,	
     
    OutputsX = block_utils:set_value_status(Outputs, Value, Status),
  
    % This is the block state
    {Config, Inputs, OutputsX, PrivateZ}.
  
  %%
  %%  Execute the block specific functionality
  
negative.code:   block_utils:merge_attribute_lists(
      block_common:inputs(),
      [
        {display_on, true, ?EMPTY_LINK},
        {blink_rate, 0, ?EMPTY_LINK},
        {brightness, 0, ?EMPTY_LINK},
        {seven_segs_1, 16#FF, ?EMPTY_LINK},
        {seven_segs_2, 16#FF, ?EMPTY_LINK},
        {colon, true, ?EMPTY_LINK},
        {seven_segs_3, 16#FF, ?EMPTY_LINK},
        {seven_segs_4, 16#FF, ?EMPTY_LINK}
      ]). 
  
  
  