I am following the XNA tutorial from The Hazy Mind. I have a base object with position (Vector3) and Rotation (Quaternion). The object model looks like this: 
From the camera implementation in the tutorial, I made a copy of the Rotation and Revolve methods and implemented them in Object
public virtual void Rotate(Vector3 axis, float angle) { axis = Vector3.Transform(axis, Matrix.CreateFromQuaternion(Rotation)); Rotation = Quaternion.Normalize(Quaternion.CreateFromAxisAngle(axis, angle) * Rotation); } public virtual void Revolve(Vector3 target, Vector3 axis, float angle) { Vector3 revolveAxis = Vector3.Transform(axis, Matrix.CreateFromQuaternion(Rotation)); Quaternion rotate = Quaternion.Normalize(Quaternion.CreateFromAxisAngle(revolveAxis, angle)); Position = Vector3.Transform(Position - target, Matrix.CreateFromQuaternion(rotate)) + target; Rotate(axis, angle); }
My Block object creates 6 Quad instances and calls the rendering method for each Quad object, I have the offsets and rotations assigned to each Quad to form a textured block that looks like this: 
And now we have a real problem, calling Rotate on my Block object causes the object to change rotation, and my Quad objects do not rotate, so I applied the new Rotate function in my block object.
public override void Rotate(Vector3 axis, float angle) { for (int i = 0; i < mySides.Length; i++) { Quad side = mySides[i]; side.Revolve(this.Position, axis, angle); } }
This, however, did not show the expected result, as shown here:

Wrong decision
The following solution will work, but will not be very general and will be limited: A bunch of if statements that checks which axis I want to rotate on and then rotates each side (the Quad object) in the correct way.
The right decision
Alternatively, I could make the rendering of Quad objects dependent on the Rotation Block object (their parent), but I'm not sure how to do this.
The third and final option is that the Rotate method updates each rotation and position of the Quad objects to the correct values, I'm not sure how to do this.
Question
So I ask for some ideas or thoughts about this, possibly some links and / or tutorials that explain how to use Quaternions in XNA, preferably visually.
Greetings, looking forward to your input :)