i think it's also important that the unexpected use be one that applies the program in its proper function, just in a way not anticipated by the original design. indeed, that seems to be the whole point! it's not just using a screwdriver to pry open a tin! for instance, the traditional example of the pipeline for spelling checking application applies several commands in turn in a way that is perfectly reasonable, and understandable, but the composition to do spelling checking was not anticipated by those who wrote the commands. in that pipeline in Software Tools, concat concatenates files, translit does its normal transliteration, sort sorts, unique eliminates duplicates, and `common' compares lines from two files as usual, but in this case one file is a dictionary.