This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-statistics.git

commit 66a75ddecc889dcb85885a7b4ca04c8433618625
Author: Alex Herbert <[email protected]>
AuthorDate: Fri Sep 18 20:35:41 2026 +0100

    Fix picolli usage for the distribution application
    
    Output options that are a sub-class type must be declared in the command
    class so that picolli can create the correct instance to set arguments
    from the command line.
    
    Use of inheritance and chained constructors has been removed as this
    only works for default arguments.
---
 .../AbstractContinuousDistributionCommand.java     | 19 +--------
 .../AbstractDiscreteDistributionCommand.java       | 19 +--------
 .../examples/distribution/BetaCommand.java         | 47 +++++++++++++--------
 .../examples/distribution/BinomialCommand.java     | 47 +++++++++++++--------
 .../examples/distribution/CauchyCommand.java       | 47 +++++++++++++--------
 .../examples/distribution/ChiSquaredCommand.java   | 47 +++++++++++++--------
 .../examples/distribution/ExpCommand.java          | 47 +++++++++++++--------
 .../statistics/examples/distribution/FCommand.java | 47 +++++++++++++--------
 .../examples/distribution/FoldedNormalCommand.java | 49 +++++++++++++---------
 .../examples/distribution/GammaCommand.java        | 47 +++++++++++++--------
 .../examples/distribution/GeometricCommand.java    | 47 +++++++++++++--------
 .../examples/distribution/GumbelCommand.java       | 47 +++++++++++++--------
 .../distribution/HypergeometricCommand.java        | 47 +++++++++++++--------
 .../examples/distribution/LaplaceCommand.java      | 47 +++++++++++++--------
 .../examples/distribution/LevyCommand.java         | 47 +++++++++++++--------
 .../examples/distribution/LogNormalCommand.java    | 47 +++++++++++++--------
 .../examples/distribution/LogUniformCommand.java   | 47 +++++++++++++--------
 .../examples/distribution/LogisticCommand.java     | 47 +++++++++++++--------
 .../examples/distribution/NakagamiCommand.java     | 47 +++++++++++++--------
 .../examples/distribution/NormalCommand.java       | 47 +++++++++++++--------
 .../examples/distribution/ParetoCommand.java       | 47 +++++++++++++--------
 .../examples/distribution/PascalCommand.java       | 47 +++++++++++++--------
 .../examples/distribution/PoissonCommand.java      | 47 +++++++++++++--------
 .../statistics/examples/distribution/TCommand.java | 47 +++++++++++++--------
 .../examples/distribution/TrapezoidalCommand.java  | 47 +++++++++++++--------
 .../examples/distribution/TriangularCommand.java   | 47 +++++++++++++--------
 .../distribution/TruncatedNormalCommand.java       | 47 +++++++++++++--------
 .../distribution/UniformContinuousCommand.java     | 47 +++++++++++++--------
 .../distribution/UniformDiscreteCommand.java       | 47 +++++++++++++--------
 .../examples/distribution/WeibullCommand.java      | 47 +++++++++++++--------
 .../examples/distribution/ZetaCommand.java         | 47 +++++++++++++--------
 .../examples/distribution/ZipfCommand.java         | 48 ++++++++++++---------
 32 files changed, 875 insertions(+), 576 deletions(-)

diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractContinuousDistributionCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractContinuousDistributionCommand.java
index 3d9fbb89..e79ab7e4 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractContinuousDistributionCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractContinuousDistributionCommand.java
@@ -19,7 +19,6 @@ package org.apache.commons.statistics.examples.distribution;
 import java.util.List;
 import java.util.concurrent.Callable;
 import org.apache.commons.statistics.distribution.ContinuousDistribution;
-import picocli.CommandLine.ArgGroup;
 import picocli.CommandLine.Mixin;
 
 /**
@@ -45,21 +44,9 @@ abstract class AbstractContinuousDistributionCommand 
implements Callable<Void> {
     @Mixin
     private StandardOptions standardOptions;
 
-    /** The distribution options. */
-    @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, order = 
2)
-    private OutputOptions outputOptions;
-
-    /**
-     * Create an instance.
-     *
-     * @param outputOptions the output options
-     */
-    AbstractContinuousDistributionCommand(OutputOptions outputOptions) {
-        this.outputOptions = outputOptions;
-    }
-
     @Override
     public Void call() {
+        final OutputOptions outputOptions = getOutputOptions();
         final List<Distribution<ContinuousDistribution>> distributions = 
getDistributions();
         // Set the function based on the class name
         final String name = getClass().getSimpleName();
@@ -113,7 +100,5 @@ abstract class AbstractContinuousDistributionCommand 
implements Callable<Void> {
      *
      * @return the output options
      */
-    protected OutputOptions getOutputOptions() {
-        return outputOptions;
-    }
+    protected abstract OutputOptions getOutputOptions();
 }
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractDiscreteDistributionCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractDiscreteDistributionCommand.java
index 9c1422b6..b4e77340 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractDiscreteDistributionCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/AbstractDiscreteDistributionCommand.java
@@ -19,7 +19,6 @@ package org.apache.commons.statistics.examples.distribution;
 import java.util.List;
 import java.util.concurrent.Callable;
 import org.apache.commons.statistics.distribution.DiscreteDistribution;
-import picocli.CommandLine.ArgGroup;
 import picocli.CommandLine.Mixin;
 
 /**
@@ -45,21 +44,9 @@ abstract class AbstractDiscreteDistributionCommand 
implements Callable<Void> {
     @Mixin
     private StandardOptions standardOptions;
 
-    /** The distribution options. */
-    @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, order = 
2)
-    private OutputOptions outputOptions;
-
-    /**
-     * Create an instance.
-     *
-     * @param outputOptions the output options
-     */
-    AbstractDiscreteDistributionCommand(OutputOptions outputOptions) {
-        this.outputOptions = outputOptions;
-    }
-
     @Override
     public Void call() {
+        final OutputOptions outputOptions = getOutputOptions();
         final List<Distribution<DiscreteDistribution>> distributions = 
getDistributions();
         // Set the function based on the class name
         final String name = getClass().getSimpleName();
@@ -109,7 +96,5 @@ abstract class AbstractDiscreteDistributionCommand 
implements Callable<Void> {
      *
      * @return the output options
      */
-    protected OutputOptions getOutputOptions() {
-        return outputOptions;
-    }
+    protected abstract OutputOptions getOutputOptions();
 }
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BetaCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BetaCommand.java
index 5a31735a..1f4ab88e 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BetaCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BetaCommand.java
@@ -64,15 +64,6 @@ class BetaCommand extends AbstractDistributionCommand {
             private double[] beta = {0.5, 1, 3, 2, 5};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] alpha = params.alpha;
@@ -94,17 +85,33 @@ class BetaCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 1));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 1);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class BetaCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Beta distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BinomialCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BinomialCommand.java
index 0c905083..e66918dc 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BinomialCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/BinomialCommand.java
@@ -65,15 +65,6 @@ class BinomialCommand extends AbstractDistributionCommand {
             private double[] p = {0.5, 0.7, 0.5};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             int[] trials = params.trials;
@@ -95,17 +86,33 @@ class BinomialCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(0, 40));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 40);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -113,9 +120,13 @@ class BinomialCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Binomial distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/CauchyCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/CauchyCommand.java
index 91e586d4..25fe5c20 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/CauchyCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/CauchyCommand.java
@@ -64,15 +64,6 @@ class CauchyCommand extends AbstractDistributionCommand {
             private double[] scale = {0.5, 1, 2, 1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] location = params.location;
@@ -94,17 +85,33 @@ class CauchyCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class CauchyCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Cauchy distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ChiSquaredCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ChiSquaredCommand.java
index 965ca43f..7d7d8026 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ChiSquaredCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ChiSquaredCommand.java
@@ -58,15 +58,6 @@ class ChiSquaredCommand extends AbstractDistributionCommand {
             private double[] df = {1, 2, 3, 4, 6, 9};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             // Create distributions
@@ -81,17 +72,33 @@ class ChiSquaredCommand extends AbstractDistributionCommand 
{
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 8));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 8);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -99,9 +106,13 @@ class ChiSquaredCommand extends AbstractDistributionCommand 
{
     @Command(name = "info",
              description = "Chi-squared distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ExpCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ExpCommand.java
index 75374750..8ed10bbf 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ExpCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ExpCommand.java
@@ -57,15 +57,6 @@ class ExpCommand extends AbstractDistributionCommand {
             private double[] mean = {2, 1, 2.0 / 3};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             // Create distributions
@@ -80,17 +71,33 @@ class ExpCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -98,9 +105,13 @@ class ExpCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Exponential distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FCommand.java
index 8c29f5ef..d327628e 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FCommand.java
@@ -64,15 +64,6 @@ class FCommand extends AbstractDistributionCommand {
             private double[] df2 = {1, 1, 2, 1, 100};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] df1 = params.df1;
@@ -94,17 +85,33 @@ class FCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class FCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "F distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FoldedNormalCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FoldedNormalCommand.java
index 76e752ba..80d2bba1 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FoldedNormalCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/FoldedNormalCommand.java
@@ -67,15 +67,6 @@ class FoldedNormalCommand extends 
AbstractDistributionCommand {
             private double[] sigma = {1, 2, 1, 1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] mean = params.mu;
@@ -97,27 +88,47 @@ class FoldedNormalCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Information command. */
     @Command(name = "info",
-             description = "Folded normal distribution information.")
+             description = "Zeta distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GammaCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GammaCommand.java
index 0e73e0b8..59b0f516 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GammaCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GammaCommand.java
@@ -65,15 +65,6 @@ class GammaCommand extends AbstractDistributionCommand {
             private double[] scale = {2, 2, 2, 1, 0.5, 1, 1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] shape = params.shape;
@@ -95,17 +86,33 @@ class GammaCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 20));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 20);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -113,9 +120,13 @@ class GammaCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Gamme distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GeometricCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GeometricCommand.java
index 6737db44..9bc4084d 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GeometricCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GeometricCommand.java
@@ -58,15 +58,6 @@ class GeometricCommand extends AbstractDistributionCommand {
             private double[] p = {0.2, 0.5, 0.8};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             // Create distributions
@@ -81,17 +72,33 @@ class GeometricCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(0, 10));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 10);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -99,9 +106,13 @@ class GeometricCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Geometric distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GumbelCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GumbelCommand.java
index 9054c7af..7edd35c3 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GumbelCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/GumbelCommand.java
@@ -64,15 +64,6 @@ class GumbelCommand extends AbstractDistributionCommand {
             private double[] beta = {2, 2, 3, 4};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] location = params.mu;
@@ -94,17 +85,33 @@ class GumbelCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 20));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 20);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class GumbelCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Gumbel distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/HypergeometricCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/HypergeometricCommand.java
index 1486fbf6..d6f255c2 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/HypergeometricCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/HypergeometricCommand.java
@@ -74,15 +74,6 @@ class HypergeometricCommand extends 
AbstractDistributionCommand {
             private int[] n = {100, 200, 300};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             int[] popSize = params.popSize;
@@ -106,17 +97,33 @@ class HypergeometricCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(0, 60));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 60);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -124,9 +131,13 @@ class HypergeometricCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Hypergeometric distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LaplaceCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LaplaceCommand.java
index d79c78cc..97731bc1 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LaplaceCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LaplaceCommand.java
@@ -64,15 +64,6 @@ class LaplaceCommand extends AbstractDistributionCommand {
             private double[] beta = {1, 2, 4, 4};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] location = params.mu;
@@ -94,17 +85,33 @@ class LaplaceCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-10, 10));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-10, 10);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class LaplaceCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Laplace distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LevyCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LevyCommand.java
index 032d92ea..a2b3db57 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LevyCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LevyCommand.java
@@ -64,15 +64,6 @@ class LevyCommand extends AbstractDistributionCommand {
             private double[] c = {0.5, 1, 2, 4, 8};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] location = params.mu;
@@ -94,17 +85,33 @@ class LevyCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 3));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 3);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class LevyCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Levy distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogNormalCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogNormalCommand.java
index 28c91f0b..e31656d0 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogNormalCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogNormalCommand.java
@@ -65,15 +65,6 @@ class LogNormalCommand extends AbstractDistributionCommand {
             private double[] sigma = {0.125, 0.25, 0.5, 1, 1.5, 10};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] mean = params.mu;
@@ -95,17 +86,33 @@ class LogNormalCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 3));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 3);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -113,9 +120,13 @@ class LogNormalCommand extends AbstractDistributionCommand 
{
     @Command(name = "info",
              description = "Log-normal distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogUniformCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogUniformCommand.java
index 6b7dbcc6..fc44ee70 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogUniformCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogUniformCommand.java
@@ -67,15 +67,6 @@ class LogUniformCommand extends AbstractDistributionCommand {
             private double[] upper = {4, 6};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] lower = params.lower;
@@ -97,17 +88,33 @@ class LogUniformCommand extends AbstractDistributionCommand 
{
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -115,9 +122,13 @@ class LogUniformCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Log uniform distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogisticCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogisticCommand.java
index 469c63a5..e857bafe 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogisticCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/LogisticCommand.java
@@ -64,15 +64,6 @@ class LogisticCommand extends AbstractDistributionCommand {
             private double[] s = {2, 3, 4, 2, 1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] location = params.mu;
@@ -94,17 +85,33 @@ class LogisticCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 20));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 20);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class LogisticCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Logistic distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NakagamiCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NakagamiCommand.java
index c1ac0a59..ef01f03a 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NakagamiCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NakagamiCommand.java
@@ -64,15 +64,6 @@ class NakagamiCommand extends AbstractDistributionCommand {
             private double[] omega = {3, 3, 3, 0.5, 1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] shape = params.mu;
@@ -94,17 +85,33 @@ class NakagamiCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 4));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 4);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -112,9 +119,13 @@ class NakagamiCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Nakagami distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NormalCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NormalCommand.java
index 7b785340..3b5048e4 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NormalCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/NormalCommand.java
@@ -66,15 +66,6 @@ class NormalCommand extends AbstractDistributionCommand {
             private double[] sigma = {Math.sqrt(0.2), 1, Math.sqrt(5), 
Math.sqrt(0.5)};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] mean = params.mu;
@@ -96,17 +87,33 @@ class NormalCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -114,9 +121,13 @@ class NormalCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Normal distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ParetoCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ParetoCommand.java
index 264133a1..d0fb0df0 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ParetoCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ParetoCommand.java
@@ -65,15 +65,6 @@ class ParetoCommand extends AbstractDistributionCommand {
             private double[] shape = {3, 2, 1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] scale = params.scale;
@@ -95,17 +86,33 @@ class ParetoCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -113,9 +120,13 @@ class ParetoCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Pareto distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PascalCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PascalCommand.java
index a07234f8..8beb1c3c 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PascalCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PascalCommand.java
@@ -68,15 +68,6 @@ class PascalCommand extends AbstractDistributionCommand {
             private double[] p = {1.0 / 11, 2.0 / 12, 3.0 / 13, 4.0 / 14, 5.0 
/ 15, 10.0 / 20, 20.0 / 30, 40.0 / 50};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             int[] r = params.r;
@@ -98,17 +89,33 @@ class PascalCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(0, 25));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 25);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -116,9 +123,13 @@ class PascalCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Pascal distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PoissonCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PoissonCommand.java
index 12054773..00a81908 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PoissonCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/PoissonCommand.java
@@ -58,15 +58,6 @@ class PoissonCommand extends AbstractDistributionCommand {
             private double[] mean = {1, 4, 10};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             // Create distributions
@@ -81,17 +72,33 @@ class PoissonCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(0, 20));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 20);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -99,9 +106,13 @@ class PoissonCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Poisson distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TCommand.java
index eb498376..dc096138 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TCommand.java
@@ -57,15 +57,6 @@ class TCommand extends AbstractDistributionCommand {
             private double[] df = {1, 2, 5, 1e10};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             // Create distributions
@@ -80,17 +71,33 @@ class TCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -98,9 +105,13 @@ class TCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "T distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TrapezoidalCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TrapezoidalCommand.java
index f95b998b..34780978 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TrapezoidalCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TrapezoidalCommand.java
@@ -83,15 +83,6 @@ class TrapezoidalCommand extends AbstractDistributionCommand 
{
             private double[] upper = {4, 3, 3};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] a = params.lower;
@@ -117,17 +108,33 @@ class TrapezoidalCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -135,9 +142,13 @@ class TrapezoidalCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Trapezoidal distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TriangularCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TriangularCommand.java
index 1598e389..4a58f75d 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TriangularCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TriangularCommand.java
@@ -75,15 +75,6 @@ class TriangularCommand extends AbstractDistributionCommand {
             private double[] upper = {4, 5};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] lower = params.lower;
@@ -107,17 +98,33 @@ class TriangularCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -125,9 +132,13 @@ class TriangularCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Triangular distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TruncatedNormalCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TruncatedNormalCommand.java
index 58ecca91..1cbe434a 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TruncatedNormalCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/TruncatedNormalCommand.java
@@ -84,15 +84,6 @@ class TruncatedNormalCommand extends 
AbstractDistributionCommand {
             private double[] upper = {MAX};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] mean = params.mu;
@@ -119,17 +110,33 @@ class TruncatedNormalCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(MIN, MAX));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(MIN, MAX);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -137,9 +144,13 @@ class TruncatedNormalCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Truncated normal distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformContinuousCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformContinuousCommand.java
index f7218faa..f5ff918a 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformContinuousCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformContinuousCommand.java
@@ -67,15 +67,6 @@ class UniformContinuousCommand extends 
AbstractDistributionCommand {
             private double[] upper = {3, 5, 2};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] lower = params.lower;
@@ -97,17 +88,33 @@ class UniformContinuousCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -115,9 +122,13 @@ class UniformContinuousCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Continuous uniform distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformDiscreteCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformDiscreteCommand.java
index c62ca21f..d164741a 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformDiscreteCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/UniformDiscreteCommand.java
@@ -66,15 +66,6 @@ class UniformDiscreteCommand extends 
AbstractDistributionCommand {
             private int[] upper = {5, 4};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             int[] lower = params.lower;
@@ -96,17 +87,33 @@ class UniformDiscreteCommand extends 
AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(-5, 5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(-5, 5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -114,9 +121,13 @@ class UniformDiscreteCommand extends 
AbstractDistributionCommand {
     @Command(name = "info",
              description = "Discrete uniform distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/WeibullCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/WeibullCommand.java
index deef8086..734b5944 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/WeibullCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/WeibullCommand.java
@@ -65,15 +65,6 @@ class WeibullCommand extends AbstractDistributionCommand {
             private double[] beta = {1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<ContinuousDistribution>> 
getDistributions() {
             double[] alpha = params.alpha;
@@ -95,17 +86,33 @@ class WeibullCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new ContinuousDistributionOptions(0, 2.5));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends ContinuousDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(0, 2.5);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseContinuousDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseContinuousDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -113,9 +120,13 @@ class WeibullCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Weibull distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZetaCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZetaCommand.java
index 53d91f58..fcf7fab0 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZetaCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZetaCommand.java
@@ -57,15 +57,6 @@ class ZetaCommand extends AbstractDistributionCommand {
             private double[] e = {1.1, 2.1, 3.1};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             // Create distributions
@@ -80,17 +71,33 @@ class ZetaCommand extends AbstractDistributionCommand {
 
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(1, 10));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(1, 10);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -98,9 +105,13 @@ class ZetaCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Zeta distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
diff --git 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZipfCommand.java
 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZipfCommand.java
index dc035905..a2d84efa 100644
--- 
a/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZipfCommand.java
+++ 
b/commons-statistics-examples/examples-distribution/src/main/java/org/apache/commons/statistics/examples/distribution/ZipfCommand.java
@@ -64,15 +64,6 @@ class ZipfCommand extends AbstractDistributionCommand {
             private double[] e = {1, 2, 3, 4};
         }
 
-        /**
-         * Create an instance.
-         *
-         * @param outputOptions the output options
-         */
-        BaseCommand(OutputOptions outputOptions) {
-            super(outputOptions);
-        }
-
         @Override
         protected List<Distribution<DiscreteDistribution>> getDistributions() {
             int[] n = params.n;
@@ -92,20 +83,35 @@ class ZipfCommand extends AbstractDistributionCommand {
         }
     }
 
-
     /** Base command for the distribution that defines the parameters for 
probability functions. */
     private abstract static class ProbabilityCommand extends BaseCommand {
-        /** Default constructor. */
-        ProbabilityCommand() {
-            super(new DiscreteDistributionOptions(1, 10));
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private Options distributionOptions = new Options();
+
+        /** Extend the options to set the default values for this 
distribution. */
+        static final class Options extends DiscreteDistributionOptions {
+            /** Set defaults. */
+            private Options() {
+                super(1, 10);
+            }
+        }
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
     /** Base command for the distribution that defines the parameters for 
inverse probability functions. */
     private abstract static class InverseProbabilityCommand extends 
BaseCommand {
-        /** Default constructor. */
-        InverseProbabilityCommand() {
-            super(new InverseDiscreteDistributionOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private InverseDiscreteDistributionOptions distributionOptions = new 
InverseDiscreteDistributionOptions();
+
+        @Override
+        protected DistributionOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 
@@ -113,9 +119,13 @@ class ZipfCommand extends AbstractDistributionCommand {
     @Command(name = "info",
              description = "Zipf distribution information.")
     static class Info extends BaseCommand {
-        /** Default constructor. */
-        Info() {
-            super(new OutputOptions());
+        /** The distribution options. */
+        @ArgGroup(validate = false, heading = HEADING_EVALUATION_OPTIONS, 
order = 2)
+        private OutputOptions distributionOptions = new OutputOptions();
+
+        @Override
+        protected OutputOptions getOutputOptions() {
+            return distributionOptions;
         }
     }
 

Reply via email to