The names of the product elements
The name of the type
a function which accepts user input
a UserInput from the user input