why is dirty being set per caption? isn't it a global setting for the whole session? if you're trying to handle like if question is changed from 'A' to 'B' (mark dirty) then back from 'B' to 'A' (no longer mark as dirty), i don't think that level of detail is necessary. the first time a question answer is changed to something else, the whole session will be dirty, even if that question is later changed back to what it originally was. i think this is how 'unsaved changes' flags work in most software. what i was saying before was just catching if you type in a question's text field, but then don't actually change the answer for that question, that shouldn't trigger marking the session as dirty.