anchor.diff:    block_utils:merge_attribute_lists(
       block_common:inputs(),
       [
  +      {display_on, true, ?EMPTY_LINK},
         {blink_rate, 0, ?EMPTY_LINK},
  -      {brightness, 15, ?EMPTY_LINK},
  -      {digit_1, 1, ?EMPTY_LINK},
  -      {decimal_1, true, ?EMPTY_LINK},
  -      {digit_2, 2, ?EMPTY_LINK},
  -      {decimal_2, true, ?EMPTY_LINK},
  +      {brightness, 0, ?EMPTY_LINK},
  +      {seven_segs_1, 16#FF, ?EMPTY_LINK},
  +      {seven_segs_2, 16#FF, ?EMPTY_LINK},
         {colon, true, ?EMPTY_LINK},
  -      {digit_3, 3, ?EMPTY_LINK},
  -      {decimal_3, true, ?EMPTY_LINK},
  -      {digit_4, 4, ?EMPTY_LINK},
  -      {decimal_4, true, ?EMPTY_LINK}
  +      {seven_segs_3, 16#FF, ?EMPTY_LINK},
  +      {seven_segs_4, 16#FF, ?EMPTY_LINK}
       ]). 
   
   
  
positive.code: execute({Config, Inputs, Outputs, Private}) ->
  
    I2cRef = block_utils:get_value(Private, i2c_ref),
    Buffer = block_utils:get_value(Private, ht16k33_disp_buff),
    
    BlinkRate = block_utils:get_value(Inputs, blink_rate),
    ht16k33_led_driver:set_blink_rate(I2cRef, BlinkRate),
    
    Brightness = block_utils:get_value(Inputs, brightness),
    ht16k33_led_driver:set_blink_rate(I2cRef, Brightness),
  
    Digit1 = block_utils:get_value(Inputs, digit_1),
    Decimal1 = block_utils:get_value(Inputs, decimal_1),
    Buffer1 = ht16k33_4digit_led:write_digit(I2cRef, Buffer, 0, Digit1, Decimal1, false),
    
    Digit2 = block_utils:get_value(Inputs, digit_2),
    Decimal2 = block_utils:get_value(Inputs, decimal_2),
    Buffer2 = ht16k33_4digit_led:write_digit(I2cRef, Buffer1, 1, Digit2, Decimal2, false),
    
    Colon = block_utils:get_value(Inputs, colon),
    BufferC = ht16k33_4digit_led:set_colon(I2cRef, Buffer2, Colon, false),
  
    Digit3 = block_utils:get_value(Inputs, digit_3),
    Decimal3 = block_utils:get_value(Inputs, decimal_3),
    Buffer3 = ht16k33_4digit_led:write_digit(I2cRef, BufferC, 3, Digit3, Decimal3, false),
    
    Digit4 = block_utils:get_value(Inputs, digit_4),
    Decimal4 = block_utils:get_value(Inputs, decimal_4),
    % Update the display after updating the buffer on the last digit
    Buffer4 = ht16k33_4digit_led:write_digit(I2cRef, Buffer3, 4, Digit4, Decimal4, true),
    
    NewPrivate = block_utils:set_value(Private, ht16k33_disp_buff, Buffer4),
    
    % Block value output really doesn't have any useful info right now
    NewOutputs = block_utils:set_value_status(Outputs, 0, normal),
    
    % Return updated block state
    {Config, Inputs, NewOutputs, NewPrivate}.
  
  
  %% 
  
negative.code: -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
    i2c:stop(I2cRef),
    ok.
  
  