One of the most natural ways to acquire procedural knowledge is to watch somebody performing a number of actions and try to abstract this observed action sequence in order to make it applicable to a wider range of situations. This abstraction process can be significantly facilitated if the performing agent gives additional hints e.g. on the reasons for choosing a particular action or dealing with some particular object. Doing so requires both partners--the observer and the "trainer"--to share some common knowledge about the domain and the task at hand as well as a common language to exchange ideas about the current situation. This paper deals with the communication problem in cases where the observer is a software agent that is to be taught some procedure in a programming-by-demonstration context.