How to force mathematica to take derivatives in a specific way?

I am attempting to take some derivatives of some Lagrange planetary equations. In this I have two types of anomaly which have derivatives that are found geometrically. I’m trying to force mathematica to use the results of these derivatives. I realize that to do this I have defined the derivatives. To get Mathematica to be happy I unprotect D before doing so. Heres my code for that:

Unprotect[D];  D[f, e] := (a/r + (\[Mu]*a)/((\[Mu]*a)^(1/2)*(1 - e^2)^(1/2))^2)*Sin[f]  Unprotect[D];  D[f, M] := (1 + e*Cos[f])^2/(1 - e^2)^(3/2) 

Okay so this is all well. When I evaluate D[f,M] or D[f,e] it seems to work correctly; however when I take the derivatives of other functions derivatives don’t follow those rules I set above. For example, I made up a simple function to check this:

In[58]:= abc [a, e, i, f, c] := e*f*Sin[f]  In[59]:= D[abc[a, e, i, f, c], e]  Out[59]= f Sin[f] 

Uh oh. So my question is how do I get mathematica to match the derivatives I want?

Thanks for all your help