A lot of help from Bruce on this commit.  Introduced the concept of program state in order to determine if the interaction was one of observation or selection.