anchor.diff:        update_lcd_control(I2cRef, Inputs),
         Status = initialed,
         Value = 0, 
  -      {ok, Private2} = attrib_utils:set_value(Private1, i2c_ref, I2cRef);
  +      {ok, Private2} = attrib_utils:set_value(Private1, i2c_ref, I2cRef),
  +
  +      case config_utils:get_integer_range(Config, num_of_inputs, 1, 80) of
  +        {ok, NumOfInputs} ->      
  +          % Create N inputs
  +          BlockName = config_utils:name(Config),
  +
  +          Config1 = config_utils:resize_attribute_array_value(Config, 
  +                                  start_rows, NumOfInputs, {1}),
  +
  +          Config2 = config_utils:resize_attribute_array_value(Config1, 
  +                                  start_cols, NumOfInputs, {1}),
  +
  +          Inputs1 = input_utils:resize_attribute_array_value(BlockName, Inputs, 
  +                                  inputs, NumOfInputs, {"Input", ?EMPTY_LINK});
  +
  +        {error, Reason} ->
  +          Inputs1 = Inputs,
  +          Config2 = Config,
  +          {Value, Status} = config_utils:log_error(Config, num_of_inputs, Reason)
  +      end;
         
       {error, Reason} ->
         error_logger:error_msg("Error: ~p intitializing LCD driver, I2C Address: ~p~n", 
                                 [Reason, I2cAddr]),
         Status = proc_error,
         Value = not_active,
  -      Private2 = Private1
  -    end,
  +      Private2 = Private1,
  +      Config2 = Config,
  +      Inputs1 = Inputs
  +  end,
  +
  +  Outputs1 = output_utils:set_value_status(Outputs, Value, Status),
  +
  +  % This is the block state
  +  {Config2, Inputs1, Outputs1, Private2}.
  +
  +
  +%%
  +%%  Execute the block specific functionality
  +%%
  +-spec execute(block_state()) -> block_state().
  +
  +execute({Config, Inputs, Outputs, Private}) ->
  +
  +  {ok, I2cRef} = attrib_utils:get_value(Private, i2c_ref),
  +
  +  Backlight = update_lcd_control(I2cRef, Inputs),
  +
  +  {ok, NumOfInputs} = attrib_utils:get_value(Config, num_of_inputs),
  +
  +  InputNum = NumOfInputs,
  +  {Value, Status} = update_lcd_data(I2cRef, Backlight, Config, Inputs, InputNum),
      
  -  Outputs1 = output_utils:set_value_status(Outputs, Value, Status),
  -
  -  % This is the block state
  -  {Config, Inputs, Outputs1, Private2}.
  -
  -
  -%%
  -%%  Execute the block specific functionality
  -%%
  --spec execute(block_state()) -> block_state().
  -
  -execute({Config, Inputs, Outputs, Private}) ->
  -
  -  {ok, I2cRef} = attrib_utils:get_value(Private, i2c_ref),
  -
  -  Backlight = update_lcd_control(I2cRef, Inputs),
  -
  -  write_data(I2cRef, Backlight, 65),
  -
  -  Status = normal,
  -  Value = $A, 
     Outputs1 = output_utils:set_value_status(Outputs, Value, Status),
   
     % Return updated block state
  
positive.code:     [
        {i2c_device, {"i2c-1"}},
        {i2c_addr, {16#27}},
        {display_size, {twentyXfour}}  % sixteenXtwo, handle 20 col by 4 line, and 16 col by 2 line displays
      ]). 
  
  
  
negative.code: %
  % Entry Mode Set command params
  %
  -define(INCREMENT, 16#01).
  -define(DECREMENT, 16#00).
  
  -define(SHIFT, 16#02). 
  -define(NO_SHIFT, 16#00). 
  
  %
  % Display Control Command params
  %
  -define(BLINK_CURSOR_ON, 16#01).
  -define(BLINK_CURSOR_OFF, 16#00).
  
  -define(CURSOR_ON, 16#02). 
  -define(CURSOR_OFF, 16#00).
  
  -define(DISPLAY_ON, 16#04).
  -define(DISPLAY_OFF, 16#00).
  
  %
  % Function Set Command params
  %
  -define(DATA_LEN_8BITS, 16#10).
  -define(DATA_LEN_4BITS, 16#00).
  
  -define(NUM_LINES_2, 16#08).
  -define(NUM_LINES_1, 16#00).
  
  -define(FONT_5X10, 16#04).
  -define(FONT_5X8, 16#00).
  
  %
  % Set data address (i.e. cursor location) params
  %
  -define(LINE_1, 16#00).
  -define(LINE_2, 16#40).
  -define(LINE_3, 16#14).
  -define(LINE_4, 16#54).
  
  
  %
  