INSTRUCTIONS FOR A TYPICAL INTERACTION Start the Keen Coffee Machine. Select 'What's Next?' Select 'Yes' that you do have a wand number. Enter your wand number. The valid wand numbers are below with their corresponding saved coffee. If you enter an invalid wand number then the default coffee will be used. Wand Number: 852 - Small Regular Hot Coffee Wand Number: 137 - Medium Decaf Hot Coffee Wand Number: 538 - Large Regular Iced Coffee Default Coffee: Medium Regular Hot Coffee Select 'Yes' to have the agent process your wand number. Modify coffee options if desired then select 'Yes' to have the agent make this coffee. Select your method of payment then select 'Done' to pay for your coffee. Pretend to take your freshly made coffee from the machine. Select 'Thanks. Good bye, stay smart.' to close the application. WHAT WORKED I wanted the wand to be optional for using the Keen Coffee Machine. The presence or absence of a valid wand number should not negatively affect the usability of the interface. I accomplished this by having the wand step be optional and provided 'Enter Wand Number' and 'Select Your Coffee' buttons on the initial screen. If the user selects 'Select Your Coffee' it is assumed they do not have a wand number. This prevents non-wand users from spending additional 'wand' time when buying their coffee. Secondly, I wanted the GUI to change based on the focus in the task model. I accomplished this by registering a listener with the Guide that was notified everytime the focus changed. When the GUI receives notification of the plan changing focus it gets the decomposition step of that plan's goal. The GUI updates according to this decomposition step. For example, if the decomposition step is 'pay' then the GUI automatically changes to the payment screen. WHAT DIDN'T I would liked to have had the 'Enter Wand Number' screen continuously prompt the user for a valid wand number if they entered an invalid wand number. I changed my task model to include a recursive task that would loop until the user entered a valid wand number. The 'wand' step is optional which seemed to cause some oddities in the task engine. When the wand step is optional the focus does not correctly get set to the 'enterNumber' task after 'haveWand' outputs 'true' and the 'next' command is processed. Instead the focus jumps to the 'getWandCoffee' task. Somehow the 'enterValidNumber' task is set to 'done' during the 'next' command processing. If the 'wand' step is NOT optional the focus gets set correctly. I do not have the recursion XML in my submitted project version but I have included it on the webpage. Please refer to CoffeeWandOptionalRecursionNotWorking.xml file. FUTURE DIRECTIONS Future work for this application includes: Allow the user to purchase wands from the machine. When the user selects to 'Pay with Wand' have the machine verify available funds. If funds are available then subtract the price of the coffee. If funds are not available then prompt the user to add additional funds to the wand or use another method of payment. Allow the user to add additional money to their wand. Allow the user to store multiple saved coffees on their wand. Allow the user to select from a list of saved coffees on their wand. Allow the user to go straight to selecting their coffee without the wand but allow them to pay with the wand. Currently, the system assumes they don't have a wand if they go straight to selecting their coffee and doesn't give them the option to pay with the wand. It should allow them to pay with a wand in the case where they want a coffee they don't have saved on their wand. The interface would then need to prompt for their wand number if they choose to pay with the wand in this scenario. If user selects new coffee, pays with wand, enters valid wand number then the interface should prompt to save this new coffee to the wand. This application could be applied to any 'fast food' domain. People can save their meals to a wand. They would no longer need to repeat frequently ordered meals with all of their custom options. They would just swipe their wand and select their meal for the day.