[Branch]: differential_rotation

This is the feature branch that contains some diff rot code, I think it needs some love so I am opening this so people don't forget about it!!
what's P again? but B0 and semi-diameter should be encoded, or computeable from a good header right?