Intermediate; still some examples to be worked out.