Extend the DIFF procedure to differentiate general powers, the functions and to return unevaluated instead of giving an error when it does not know how to differentiate the given input. Extend DIFF to handle repeated derivatives, i.e. how to DIFF the function DIFF. For example, DIFF(DIFF(f(x,y),x),y) should output the same result as DIFF(DIFF(f(x,y),y),x).