@Override
  public Element persist(Document doc, Element widgetNode, Widget widget) {
    CylinderWidget cylinder = (CylinderWidget) widget;
    RigidBody cylinderBody = cylinder.getRigidBody();

    widgetNode.appendChild(
        persistParam(
            doc, "location", v3fToString(cylinderBody.getCenterOfMassPosition(new Vector3f()))));
    widgetNode.appendChild(
        persistParam(
            doc,
            "orientation",
            v3fToString(
                RenderableBase.toAngles(
                    cylinderBody.getWorldTransform(new Transform()).getRotation(new Quat4f())))));
    widgetNode.appendChild(
        persistParam(
            doc, "linearVeloctiy", v3fToString(cylinderBody.getLinearVelocity(new Vector3f()))));
    widgetNode.appendChild(
        persistParam(
            doc, "angularVelocity", v3fToString(cylinderBody.getAngularVelocity(new Vector3f()))));
    widgetNode.appendChild(persistParam(doc, "radius", "" + cylinder.getRadius()));
    widgetNode.appendChild(persistParam(doc, "height", "" + cylinder.getHeight()));
    widgetNode.appendChild(persistParam(doc, "mass", "" + (1f / cylinderBody.getInvMass())));
    widgetNode.appendChild(persistParam(doc, "restitution", "" + cylinderBody.getRestitution()));
    widgetNode.appendChild(persistParam(doc, "friction", "" + cylinderBody.getFriction()));

    return widgetNode;
  }