Hi, I would like to ask the community three questions. Prior to asking the questions, I would like to give some context and please do let me know if you have questions here: I am trying to construct a reusable editable grid and trying to make the 'rows' attribute as much generic as possible. In this attempt I have made the rule reference as input, which means that anyone who uses this reusable grid would be able to use their own rule which renders grid row layout. So simply speaking, the reusable grid rule looks like below: editableGrid ------------- a!gridLayout( /*Other attributes of gridLayout removed to make it look simple*/ rows: a!applyComponents( ri!nameOfItemsRowEachRule( ri!items, _, ri!itemsToken ), if(or(isnull(ri!items), count(ri!items) < 1), {}, 1+enumerate(count(ri!items))), ri!itemsToken ) /* where ri!nameOfItemsRowEachRule is of 'Any Type' */ ) Anyone who integrates the above rule would use it as follows: Example1: a!formLayout( label:"Customers", firstColumnContents:{ rule!editableGrid( /* other attributes of editableGrid to make it look simple */ nameOfItemsRowEachRule: rule!ucCustomersItemRowEach /*where ucCustomersItemRowEach will actually render the row lay out*/ ) } ) Example2: a!formLayout( label:"Employees", firstColumnContents:{ rule!editableGrid( /* other attributes of editableGrid to make it look simple */ nameOfItemsRowEachRule: rule!ucEmployeesItemRowEach /*where ucCustomersItemRowEach will actually render the row lay out*/ ) } ) So the problems I faced while opting for the above approach is: 1. I am unable to pass the arguments by keywords for a rule which is invoked because of being passed by reference via rule inputs. Actually I would like to configure the rows parameter as follows: rows: a!applyComponents( array:ri!nameOfItemsRowEachRule( items:ri!items, index:_, itemsToken:ri!itemsToken ), array: if(or(isnull(ri!items), count(ri!items) < 1), {}, 1+enumerate(count(ri!items))), arrayVariable: ri!itemsToken ) But I am not able to do as above as I am experiencing an error where Appian says that passing the arguments by keywords isn't available. So I am doing as follows by passing the arguments without making use of keywords: rows: a!applyComponents( ri!nameOfItemsRowEachRule( ri!items, _, ri!itemsToken ), if(or(isnull(ri!items), count(ri!items) < 1), {}, 1+enumerate(count(ri!items))), ri!itemsToken ) 2. I am unable to name the rule input as I wish, which I am making use of for receiving the reference of a rule (nameOfItemsRowEachRule). Initially I did as follows: a!gridLayout( /*Other attributes of gridLayout removed*/ rows: a!applyComponents( ri!rows( ri!items, _, ri!itemsToken ), if(or(isnull(ri!items), count(ri!items) < 1), {}, 1+enumerate(count(ri!items))), ri!itemsToken ) /* where ri!rows is of 'Any Type' */ ) But to my surprise, Appian hasn't allowed me to use the word 'rows'(Also to make a note, 'rows' is an attribute of the a!gridLayout()) and so I renamed it to 'nameOfItemsRowEachRule', which thereby resolved the issue. And the approach now opted by me is as follows: a!gridLayout( /*Other attributes of gridLayout removed*/ rows: a!applyComponents( ri!nameOfItemsRowEachRule( ri!items, _, ri!itemsToken ), if(or(isnull(ri!items), count(ri!items) < 1), {}, 1+enumerate(count(ri!items))), ri!itemsToken ) /* where ri!nameOfItemsRowEachRule is of 'Any Type' */ ) So, finally my questions are as follows: 1. Won't Appian allow the rules (Rules that were passed by reference via the rule inputs, ex: nameOfItemsRowEachRule as stated above) to be invoked by passing argiments making use of keywords? 2. Is there any constraint in naming the rule input, that has the ability to reference a rule? (As stated above, I am unable to name the input as 'rows' and has given another name called 'nameOfItemsRowEachRule') 3. Are there any other things that one should keep in mind when invoking the rules with the help of reference via rule inputs?