diff --git a/core/src/main/java/org/orekit/rugged/api/Rugged.java b/core/src/main/java/org/orekit/rugged/api/Rugged.java
index cf5043c83c7b9ba527228dce8c2f26fac652a327..d3ca2b350d7c282289475d07e7090cdca6ffe8dd 100644
--- a/core/src/main/java/org/orekit/rugged/api/Rugged.java
+++ b/core/src/main/java/org/orekit/rugged/api/Rugged.java
@@ -45,6 +45,8 @@ import org.orekit.rugged.raster.TileUpdater;
 import org.orekit.rugged.utils.ExtendedEllipsoid;
 import org.orekit.rugged.utils.SpacecraftToObservedBody;
 import org.orekit.time.AbsoluteDate;
+import org.orekit.utils.AngularDerivativesFilter;
+import org.orekit.utils.CartesianDerivativesFilter;
 import org.orekit.utils.Constants;
 import org.orekit.utils.IERSConventions;
 import org.orekit.utils.PVCoordinates;
@@ -110,9 +112,11 @@ public class Rugged {
      * @param maxDate end of search time span
      * @param overshootTolerance tolerance in seconds allowed for {@code minDate} and {@code maxDate} overshooting
      * @param positionsVelocities satellite position and velocity
-     * @param pvInterpolationOrder order to use for position/velocity interpolation
+     * @param pvInterpolationNumber number of points to use for position/velocity interpolation
+     * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
      * @param quaternions satellite quaternions
-     * @param aInterpolationOrder order to use for attitude interpolation
+     * @param aInterpolationNumber number of points to use for attitude interpolation
+     * @param aFilter filter for derivatives from the sample to use in attitude interpolation
      * @exception RuggedException if data needed for some frame cannot be loaded or if position
      * or attitude samples do not fully cover the [{@code minDate}, {@code maxDate}] search time span
      */
@@ -120,13 +124,16 @@ public class Rugged {
                   final AlgorithmId algorithmID, final EllipsoidId ellipsoidID,
                   final InertialFrameId inertialFrameID, final BodyRotatingFrameId bodyRotatingFrameID,
                   final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
-                  final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationOrder,
-                  final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationOrder)
+                  final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationNumber,
+                  final CartesianDerivativesFilter pvFilter,
+                  final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationNumber,
+                  final AngularDerivativesFilter aFilter)
         throws RuggedException {
         this(updater, maxCachedTiles, algorithmID,
              selectEllipsoid(ellipsoidID, selectBodyRotatingFrame(bodyRotatingFrameID)),
              selectInertialFrame(inertialFrameID), minDate, maxDate, overshootTolerance,
-             positionsVelocities, pvInterpolationOrder, quaternions, aInterpolationOrder);
+             positionsVelocities, pvInterpolationNumber, pvFilter,
+             quaternions, aInterpolationNumber, aFilter);
     }
 
     /** Build a configured instance.
@@ -147,17 +154,21 @@ public class Rugged {
      * @param maxDate end of search time span
      * @param overshootTolerance tolerance in seconds allowed for {@code minDate} and {@code maxDate} overshooting
      * @param positionsVelocities satellite position and velocity
-     * @param pvInterpolationOrder order to use for position/velocity interpolation
+     * @param pvInterpolationNumber number of points to use for position/velocity interpolation
+     * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
      * @param quaternions satellite quaternions
-     * @param aInterpolationOrder order to use for attitude interpolation
+     * @param aInterpolationNumber number of points to use for attitude interpolation
+     * @param aFilter filter for derivatives from the sample to use in attitude interpolation
      * @exception RuggedException if data needed for some frame cannot be loaded or if position
      * or attitude samples do not fully cover the [{@code minDate}, {@code maxDate}] search time span
      */
     public Rugged(final TileUpdater updater, final int maxCachedTiles,
                   final AlgorithmId algorithmID, final OneAxisEllipsoid ellipsoid, final Frame inertialFrame,
                   final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
-                  final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationOrder,
-                  final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationOrder)
+                  final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationNumber,
+                  final CartesianDerivativesFilter pvFilter,
+                  final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationNumber,
+                  final AngularDerivativesFilter aFilter)
         throws RuggedException {
 
         // space reference
@@ -166,8 +177,8 @@ public class Rugged {
         // orbit/attitude to body converter
         this.scToBody = new SpacecraftToObservedBody(inertialFrame, ellipsoid.getBodyFrame(),
                                                      minDate, maxDate, overshootTolerance,
-                                                     positionsVelocities, pvInterpolationOrder,
-                                                     quaternions, aInterpolationOrder,
+                                                     positionsVelocities, pvInterpolationNumber, pvFilter,
+                                                     quaternions, aInterpolationNumber, aFilter,
                                                      FRAMES_TRANSFORMS_INTERPOLATION_STEP);
 
         // intersection algorithm
@@ -200,7 +211,9 @@ public class Rugged {
      * @param maxDate end of search time span
      * @param overshootTolerance tolerance in seconds allowed for {@code minDate} and {@code maxDate} overshooting
      * @param interpolationStep step to use for inertial/Earth/spacraft transforms interpolations
-     * @param interpolationOrder order to use for inertial/Earth/spacraft transforms interpolations
+     * @param interpolationNumber number of points to use for inertial/Earth/spacraft transforms interpolations
+     * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
+     * @param aFilter filter for derivatives from the sample to use in attitude interpolation
      * @param propagator global propagator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
@@ -208,12 +221,14 @@ public class Rugged {
                   final AlgorithmId algorithmID, final EllipsoidId ellipsoidID,
                   final InertialFrameId inertialFrameID, final BodyRotatingFrameId bodyRotatingFrameID,
                   final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
-                  final double interpolationStep, final int interpolationOrder, final Propagator propagator)
+                  final double interpolationStep, final int interpolationNumber,
+                  final CartesianDerivativesFilter pvFilter, final AngularDerivativesFilter aFilter,
+                  final Propagator propagator)
         throws RuggedException {
         this(updater, maxCachedTiles, algorithmID,
              selectEllipsoid(ellipsoidID, selectBodyRotatingFrame(bodyRotatingFrameID)),
              selectInertialFrame(inertialFrameID), minDate, maxDate, overshootTolerance,
-             interpolationStep, interpolationOrder, propagator);
+             interpolationStep, interpolationNumber, pvFilter, aFilter, propagator);
     }
 
     /** Build a configured instance.
@@ -234,14 +249,18 @@ public class Rugged {
      * @param maxDate end of search time span
      * @param overshootTolerance tolerance in seconds allowed for {@code minDate} and {@code maxDate} overshooting
      * @param interpolationStep step to use for inertial/Earth/spacraft transforms interpolations
-     * @param interpolationOrder order to use for inertial/Earth/spacraft transforms interpolations
+     * @param interpolationNumber number of points of to use for inertial/Earth/spacraft transforms interpolations
+     * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
+     * @param aFilter filter for derivatives from the sample to use in attitude interpolation
      * @param propagator global propagator
      * @exception RuggedException if data needed for some frame cannot be loaded
      */
     public Rugged(final TileUpdater updater, final int maxCachedTiles,
                   final AlgorithmId algorithmID, final OneAxisEllipsoid ellipsoid, final Frame inertialFrame,
                   final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
-                  final double interpolationStep, final int interpolationOrder, final Propagator propagator)
+                  final double interpolationStep, final int interpolationNumber,
+                  final CartesianDerivativesFilter pvFilter, final AngularDerivativesFilter aFilter,
+                  final Propagator propagator)
         throws RuggedException {
         try {
 
@@ -281,8 +300,8 @@ public class Rugged {
             // orbit/attitude to body converter
             this.scToBody = new SpacecraftToObservedBody(inertialFrame, ellipsoid.getBodyFrame(),
                                                          minDate, maxDate, overshootTolerance,
-                                                         positionsVelocities, interpolationOrder,
-                                                         quaternions, interpolationOrder,
+                                                         positionsVelocities, interpolationNumber, pvFilter,
+                                                         quaternions, interpolationNumber, aFilter,
                                                          FRAMES_TRANSFORMS_INTERPOLATION_STEP);
 
             // intersection algorithm
diff --git a/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java b/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java
index 6a54ed7210d5d7271ee94045b2d344691cf17135..2d8b74d01269fe8d97fad1e708bb98fee5496720 100644
--- a/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java
+++ b/core/src/main/java/org/orekit/rugged/utils/SpacecraftToObservedBody.java
@@ -67,9 +67,11 @@ public class SpacecraftToObservedBody {
      * @param overshootTolerance tolerance in seconds allowed for {@code minDate} and {@code maxDate} overshooting
      * slightly the position, velocity and quaternions ephemerides
      * @param positionsVelocities satellite position and velocity
-     * @param pvInterpolationOrder order to use for position/velocity interpolation
+     * @param pvInterpolationNumber number of points to use for position/velocity interpolation
+     * @param pvFilter filter for derivatives from the sample to use in position/velocity interpolation
      * @param quaternions satellite quaternions
-     * @param aInterpolationOrder order to use for attitude interpolation
+     * @param aInterpolationNumber number of points to use for attitude interpolation
+     * @param aFilter filter for derivatives from the sample to use in attitude interpolation
      * @param tStep step to use for inertial frame to body frame transforms cache computations
      * @exception RuggedException if [{@code minDate}, {@code maxDate}] search time span overshoots
      * position or attitude samples by more than {@code overshootTolerance}
@@ -77,8 +79,10 @@ public class SpacecraftToObservedBody {
      */
     public SpacecraftToObservedBody(final Frame inertialFrame, final Frame bodyFrame,
                                     final AbsoluteDate minDate, final AbsoluteDate maxDate, final double overshootTolerance,
-                                    final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationOrder,
-                                    final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationOrder,
+                                    final List<TimeStampedPVCoordinates> positionsVelocities, final int pvInterpolationNumber,
+                                    final CartesianDerivativesFilter pvFilter,
+                                    final List<TimeStampedAngularCoordinates> quaternions, final int aInterpolationNumber,
+                                    final AngularDerivativesFilter aFilter,
                                     final double tStep)
         throws RuggedException {
         try {
@@ -108,11 +112,11 @@ public class SpacecraftToObservedBody {
 
             // set up the cache for position-velocities
             final TimeStampedCache<TimeStampedPVCoordinates> pvCache =
-                    new ImmutableTimeStampedCache<TimeStampedPVCoordinates>(pvInterpolationOrder, positionsVelocities);
+                    new ImmutableTimeStampedCache<TimeStampedPVCoordinates>(pvInterpolationNumber, positionsVelocities);
 
             // set up the cache for attitudes
             final TimeStampedCache<TimeStampedAngularCoordinates> aCache =
-                    new ImmutableTimeStampedCache<TimeStampedAngularCoordinates>(aInterpolationOrder, quaternions);
+                    new ImmutableTimeStampedCache<TimeStampedAngularCoordinates>(aInterpolationNumber, quaternions);
 
             final int n = (int) FastMath.ceil(maxDate.durationFrom(minDate) / tStep);
             this.tStep          = tStep;
@@ -131,8 +135,7 @@ public class SpacecraftToObservedBody {
                     pvInterpolationDate = date;
                 }
                 final TimeStampedPVCoordinates interpolatedPV =
-                        TimeStampedPVCoordinates.interpolate(pvInterpolationDate,
-                                                             CartesianDerivativesFilter.USE_PV,
+                        TimeStampedPVCoordinates.interpolate(pvInterpolationDate, pvFilter,
                                                              pvCache.getNeighbors(pvInterpolationDate));
                 final TimeStampedPVCoordinates pv = interpolatedPV.shiftedBy(date.durationFrom(pvInterpolationDate));
 
@@ -146,8 +149,7 @@ public class SpacecraftToObservedBody {
                     aInterpolationDate = date;
                 }
                 final TimeStampedAngularCoordinates interpolatedQuaternion =
-                        TimeStampedAngularCoordinates.interpolate(aInterpolationDate,
-                                                                  AngularDerivativesFilter.USE_R,
+                        TimeStampedAngularCoordinates.interpolate(aInterpolationDate, aFilter,
                                                                   aCache.getNeighbors(aInterpolationDate));
                 final TimeStampedAngularCoordinates quaternion = interpolatedQuaternion.shiftedBy(date.durationFrom(aInterpolationDate));
 
diff --git a/core/src/test/java/org/orekit/rugged/api/RuggedTest.java b/core/src/test/java/org/orekit/rugged/api/RuggedTest.java
index 48546ba8e5a5fee1404a61496cf532514d06b354..c5eaea235f9a26bc7ce72a547326e2ef9e1040e6 100644
--- a/core/src/test/java/org/orekit/rugged/api/RuggedTest.java
+++ b/core/src/test/java/org/orekit/rugged/api/RuggedTest.java
@@ -71,6 +71,8 @@ import org.orekit.rugged.raster.VolcanicConeElevationUpdater;
 import org.orekit.time.AbsoluteDate;
 import org.orekit.time.TimeScale;
 import org.orekit.time.TimeScalesFactory;
+import org.orekit.utils.AngularDerivativesFilter;
+import org.orekit.utils.CartesianDerivativesFilter;
 import org.orekit.utils.Constants;
 import org.orekit.utils.IERSConventions;
 import org.orekit.utils.PVCoordinates;
@@ -144,7 +146,7 @@ public class RuggedTest {
         Rugged rugged = new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    pv.get(0).getDate(), pv.get(pv.size() - 1).getDate(), 5.0,
-                                   pv, 8, q, 8);
+                                   pv, 8, CartesianDerivativesFilter.USE_PV, q, 8, AngularDerivativesFilter.USE_R);
 
         Assert.assertTrue(rugged.isLightTimeCorrected());
         rugged.setLightTimeCorrection(false);
@@ -174,7 +176,7 @@ public class RuggedTest {
         Rugged rugged = new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    orbit.getDate().shiftedBy(-10.0), orbit.getDate().shiftedBy(+10.0), 5.0,
-                                   1.0, 8, propagator);
+                                   1.0, 8, CartesianDerivativesFilter.USE_PV, AngularDerivativesFilter.USE_R, propagator);
 
         Assert.assertTrue(rugged.isLightTimeCorrected());
         rugged.setLightTimeCorrection(false);
@@ -220,11 +222,13 @@ public class RuggedTest {
 
         Assert.assertNotNull(new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                         EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
-                                        t0.shiftedBy(4), t0.shiftedBy(6), 5.0, pv, 2, q, 2));
+                                        t0.shiftedBy(4), t0.shiftedBy(6), 5.0,
+                                        pv, 2,CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R));
         try {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
-                                   t0.shiftedBy(-1), t0.shiftedBy(6), 0.0001, pv, 2, q, 2);
+                                   t0.shiftedBy(-1), t0.shiftedBy(6), 0.0001,
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(-1), re.getParts()[0]);
@@ -233,7 +237,8 @@ public class RuggedTest {
         try {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
-                                   t0.shiftedBy(2), t0.shiftedBy(6), 0.0001, pv, 2, q, 2);
+                                   t0.shiftedBy(2), t0.shiftedBy(6), 0.0001,
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(2), re.getParts()[0]);
@@ -242,7 +247,8 @@ public class RuggedTest {
         try {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
-                                   t0.shiftedBy(4), t0.shiftedBy(9), 0.0001, pv, 2, q, 2);
+                                   t0.shiftedBy(4), t0.shiftedBy(9), 0.0001,
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(9), re.getParts()[0]);
@@ -251,7 +257,8 @@ public class RuggedTest {
         try {
             new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
-                                   t0.shiftedBy(4), t0.shiftedBy(12), 0.0001, pv, 2, q, 2);
+                                   t0.shiftedBy(4), t0.shiftedBy(12), 0.0001,
+                                   pv, 2, CartesianDerivativesFilter.USE_PV, q, 2, AngularDerivativesFilter.USE_R);
         } catch (RuggedException re) {
             Assert.assertEquals(RuggedMessages.OUT_OF_TIME_RANGE, re.getSpecifier());
             Assert.assertEquals(t0.shiftedBy(12), re.getParts()[0]);
@@ -306,7 +313,9 @@ public class RuggedTest {
         Rugged rugged = new Rugged(updater, 8, AlgorithmId.DUVENHAGE,
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    lineDatation.getDate(firstLine), lineDatation.getDate(lastLine), 5.0,
-                                   1.0 / lineDatation.getRate(0.0), 8, ephemeris);
+                                   1.0 / lineDatation.getRate(0.0), 8,
+                                   CartesianDerivativesFilter.USE_PV, AngularDerivativesFilter.USE_R,
+                                   ephemeris);
         rugged.setLightTimeCorrection(true);
         rugged.setAberrationOfLightCorrection(true);
 
@@ -382,7 +391,9 @@ public class RuggedTest {
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    minDate, maxDate, 5.0,
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
-                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2);
+                                   CartesianDerivativesFilter.USE_PV,
+                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
+                                   AngularDerivativesFilter.USE_R);
 
         rugged.addLineSensor(lineSensor);
 
@@ -435,7 +446,9 @@ public class RuggedTest {
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    minDate, maxDate, 5.0,
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
-                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2);
+                                   CartesianDerivativesFilter.USE_PV,
+                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
+                                   AngularDerivativesFilter.USE_R);
 
         rugged.addLineSensor(lineSensor);
 
@@ -493,7 +506,9 @@ public class RuggedTest {
                                        EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                        minDate, maxDate, 5.0,
                                        orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
-                                       orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2);
+                                       CartesianDerivativesFilter.USE_PV,
+                                       orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
+                                       AngularDerivativesFilter.USE_R);
         ruggedFull.addLineSensor(lineSensor);
         GeodeticPoint[] gpWithFlatBodyCorrection = ruggedFull.directLocalization("line", 100);
 
@@ -501,7 +516,9 @@ public class RuggedTest {
                                        EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                        minDate, maxDate, 5.0,
                                        orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
-                                       orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2);
+                                       CartesianDerivativesFilter.USE_PV,
+                                       orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
+                                       AngularDerivativesFilter.USE_R);
         ruggedFlat.addLineSensor(lineSensor);
         GeodeticPoint[] gpWithoutFlatBodyCorrection = ruggedFlat.directLocalization("line", 100);
 
@@ -564,7 +581,9 @@ public class RuggedTest {
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    minDate, maxDate, 5.0,
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
-                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2);
+                                   CartesianDerivativesFilter.USE_PV,
+                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
+                                   AngularDerivativesFilter.USE_R);
         rugged.setLightTimeCorrection(true);
         rugged.setAberrationOfLightCorrection(true);
         for (LineSensor lineSensor : sensors) {
@@ -672,8 +691,8 @@ public class RuggedTest {
         Rugged rugged = new Rugged(updater, 8,
                                    AlgorithmId.DUVENHAGE, EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    satellitePVList.get(0).getDate(), satellitePVList.get(satellitePVList.size() - 1).getDate(), 5.0,
-                                   satellitePVList, 8,
-                                   satelliteQList, 8);
+                                   satellitePVList, 8, CartesianDerivativesFilter.USE_PV,
+                                   satelliteQList, 8, AngularDerivativesFilter.USE_R);
 
         List<Vector3D> lineOfSight = new ArrayList<Vector3D>();
         lineOfSight.add(new Vector3D(-0.011204, 0.181530, 1d).normalize());
@@ -826,7 +845,9 @@ public class RuggedTest {
                                    EllipsoidId.WGS84, InertialFrameId.EME2000, BodyRotatingFrameId.ITRF,
                                    minDate, maxDate, 5.0,
                                    orbitToPV(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 8,
-                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2);
+                                   CartesianDerivativesFilter.USE_PV, 
+                                   orbitToQ(orbit, earth, minDate.shiftedBy(-1.0), maxDate.shiftedBy(+1.0), 0.25), 2,
+                                   AngularDerivativesFilter.USE_R);
         rugged.setLightTimeCorrection(lightTimeCorrection);
         rugged.setAberrationOfLightCorrection(aberrationOfLightCorrection);
         rugged.addLineSensor(lineSensor);