diff --git a/docs/source/conf.py b/docs/source/conf.py
index c9afebd..a6198fd 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -41,7 +41,7 @@
 
 # General information about the project.
 project = u'Ceres Solver'
-copyright = u'2014 Google Inc'
+copyright = u'2015 Google Inc'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
@@ -185,7 +185,7 @@
 # (source start file, target name, title, author, documentclass [howto/manual]).
 latex_documents = [
   ('index', 'CeresSolver.tex', u'Ceres Solver',
-   u'Sameer Agarwal \\& Keir Mierle', 'manual'),
+   u'Sameer Agarwal, Keir Mierle & Others', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -215,7 +215,7 @@
 # (source start file, name, description, authors, manual section).
 man_pages = [
     ('index', 'ceressolver', u'Ceres Solver',
-     [u'Sameer Agarwal & Keir Mierle'], 1)
+     [u'Sameer Agarwal, Keir Mierle & Others'], 1)
 ]
 
 # If true, show URL addresses after external links.
@@ -229,7 +229,7 @@
 #  dir menu entry, description, category)
 texinfo_documents = [
   ('index', 'CeresSolver', u'Ceres Solver',
-   u'Sameer Agarwal & Keir Mierle', 'CeresSolver', 'One line description of project.',
+   u'Sameer Agarwal, Keir Mierle & Others', 'CeresSolver', 'One line description of project.',
    'Miscellaneous'),
 ]
 
diff --git a/docs/source/faqs.rst b/docs/source/faqs.rst
index d851038..fd35ac5 100644
--- a/docs/source/faqs.rst
+++ b/docs/source/faqs.rst
@@ -66,6 +66,54 @@
    automatic and numeric differentiation. See
    :class:`CostFunctionToFunctor`.
 
+#. When using Quaternions,  consider using :class:`QuaternionParameterization`.
+
+   `Quaternions <https://en.wikipedia.org/wiki/Quaternion>`_ are a
+   four dimensional parameterization of the space of three dimensional
+   rotations :math:`SO(3)`.  However, the :math:`SO(3)` is a three
+   dimensional set, and so is the tangent space of a
+   Quaternion. Therefore, it is sometimes (not always) benefecial to
+   associate a local parameterization with parameter blocks
+   representing a Quaternion. Assuming that the order of entries in
+   your parameter block is :math:`w,x,y,z`, you can use
+   :class:`QuaternionParameterization`.
+
+   If however, you are using `Eigen's Quaternion
+   <http://eigen.tuxfamily.org/dox/classEigen_1_1Quaternion.html>`_
+   object, whose layout is :math:`x,y,z,w`, then we recommend you use
+   Lloyd Hughes's `Ceres Extensions
+   <https://github.com/system123/ceres_extensions>`_.
+
+#. How do I solve problems with general linear & non-linear
+   **inequality** constraints with Ceres Solver?
+
+   Currently, Ceres Solver only supports upper and lower bounds
+   constraints on the parameter blocks.
+
+   A crude way of dealing with inequality constraints is have one or
+   more of your cost functions check if the inequalities you are
+   interested in are satisfied, and if not return false instead of
+   true. This will prevent the solver from ever stepping into an
+   infeasible region.
+
+   This requires that the starting point for the optimization be a
+   feasible point.  You also risk pre-mature convergence using this
+   method.
+
+#. How do I solve problems with general linear & non-linear **equality**
+   constraints with Ceres Solver?
+
+   There is no built in support in ceres for solving problems with
+   equality constraints.  Currently, Ceres Solver only supports upper
+   and lower bounds constraints on the parameter blocks.
+
+   The trick described above for dealing with inequality
+   constraints will **not** work for equality constraints.
+
+#. How do I set one or more components of a parameter block constant?
+
+   Using :class:`SubsetParameterization`.
+
 #. Putting `Inverse Function Theorem
    <http://en.wikipedia.org/wiki/Inverse_function_theorem>`_ to use.
 
@@ -112,17 +160,14 @@
       Eigen::Matrix3d ecef_to_lla_jacobian;
       lla_to_ecef_jacobian.computeInverseWithCheck(ecef_to_lla_jacobian, invertible);
 
-#. When using Quaternions, use :class:`QuaternionParameterization`.
-
-   TBD
-
-#. How to choose a parameter block size?
-
-   TBD
 
 Solving
 =======
 
+#. How do I evaluate the Jacobian for a solver problem?
+
+   Using :func:`Problem::Evaluate`.
+
 #. Choosing a linear solver.
 
    When using the ``TRUST_REGION`` minimizer, the choice of linear
diff --git a/docs/source/nnls_modeling.rst b/docs/source/nnls_modeling.rst
index 038684d..f7c1c72 100644
--- a/docs/source/nnls_modeling.rst
+++ b/docs/source/nnls_modeling.rst
@@ -364,6 +364,12 @@
   <http://en.wikipedia.org/wiki/Numerical_differentiation>`_ can be
   used.
 
+  .. NOTE ::
+
+    TODO(sameeragarwal): Add documentation for the constructor and for
+    NumericDiffOptions. Update DynamicNumericDiffOptions in a similar
+    manner.
+
     .. code-block:: c++
 
       template <typename CostFunctor,
@@ -497,7 +503,7 @@
    estimates derivatives by performing multiple central differences
    at varying scales. Specifically, the algorithm starts at a certain
    :math:`h` and as the derivative is estimated, this step size decreases.
-   To conserve function evaluations and estimate the derivative error, the 
+   To conserve function evaluations and estimate the derivative error, the
    method performs Richardson extrapolations between the tested step sizes.
    The algorithm exhibits considerably higher accuracy, but does so by
    additional evaluations of the cost function.
diff --git a/docs/source/nnls_solving.rst b/docs/source/nnls_solving.rst
index c76d786..ab15f98 100644
--- a/docs/source/nnls_solving.rst
+++ b/docs/source/nnls_solving.rst
@@ -1574,9 +1574,21 @@
 
    Default: ``1e-6``
 
-   Relative shift used for taking numeric derivatives. For finite
-   differencing, each dimension is evaluated at slightly shifted
-   values, e.g., for forward differences, the numerical derivative is
+   .. NOTE::
+
+      This option only applies to the numeric differentiation used for
+      checking the user provided derivatives when when
+      `Solver::Options::check_gradients` is true. If you are using
+      :class:`NumericDiffCostFunction` and are interested in changing
+      the step size for numeric differentiation in your cost function,
+      please have a look at :class:`NumericDiffOptions`.
+
+   Relative shift used for taking numeric derivatives when
+   `Solver::Options::check_gradients` is `true`.
+
+   For finite differencing, each dimension is evaluated at slightly
+   shifted values, e.g., for forward differences, the numerical
+   derivative is
 
    .. math::
 
diff --git a/include/ceres/dynamic_numeric_diff_cost_function.h b/include/ceres/dynamic_numeric_diff_cost_function.h
index c852d57..7f0a951 100644
--- a/include/ceres/dynamic_numeric_diff_cost_function.h
+++ b/include/ceres/dynamic_numeric_diff_cost_function.h
@@ -85,22 +85,6 @@
         options_(options) {
   }
 
-  // Deprecated. New users should avoid using this constructor. Instead, use the
-  // constructor with NumericDiffOptions.
-  DynamicNumericDiffCostFunction(
-      const CostFunctor* functor,
-      Ownership ownership,
-      double relative_step_size)
-      : functor_(functor),
-        ownership_(ownership),
-        options_() {
-    LOG(WARNING) << "This constructor is deprecated and will be removed in "
-                    "a future version. Please use the NumericDiffOptions "
-                    "constructor instead.";
-
-    options_.relative_step_size = relative_step_size;
-  }
-
   virtual ~DynamicNumericDiffCostFunction() {
     if (ownership_ != TAKE_OWNERSHIP) {
       functor_.release();
diff --git a/include/ceres/numeric_diff_cost_function.h b/include/ceres/numeric_diff_cost_function.h
index fa96078..5dfaeab 100644
--- a/include/ceres/numeric_diff_cost_function.h
+++ b/include/ceres/numeric_diff_cost_function.h
@@ -206,29 +206,6 @@
     }
   }
 
-  // Deprecated. New users should avoid using this constructor. Instead, use the
-  // constructor with NumericDiffOptions.
-  NumericDiffCostFunction(CostFunctor* functor,
-                          Ownership ownership,
-                          int num_residuals,
-                          const double relative_step_size)
-      :functor_(functor),
-       ownership_(ownership),
-       options_() {
-    LOG(WARNING) << "This constructor is deprecated and will be removed in "
-                    "a future version. Please use the NumericDiffOptions "
-                    "constructor instead.";
-
-    if (kNumResiduals == DYNAMIC) {
-      SizedCostFunction<kNumResiduals,
-                        N0, N1, N2, N3, N4,
-                        N5, N6, N7, N8, N9>
-          ::set_num_residuals(num_residuals);
-    }
-
-    options_.relative_step_size = relative_step_size;
-  }
-
   ~NumericDiffCostFunction() {
     if (ownership_ != TAKE_OWNERSHIP) {
       functor_.release();
diff --git a/include/ceres/solver.h b/include/ceres/solver.h
index 318cf48..f53760e 100644
--- a/include/ceres/solver.h
+++ b/include/ceres/solver.h
@@ -701,10 +701,20 @@
     // this number, then the jacobian for that cost term is dumped.
     double gradient_check_relative_precision;
 
-    // Relative shift used for taking numeric derivatives. For finite
-    // differencing, each dimension is evaluated at slightly shifted
-    // values; for the case of central difference, this is what gets
-    // evaluated:
+    // WARNING: This option only applies to the to the numeric
+    // differentiation used for checking the user provided derivatives
+    // when when Solver::Options::check_gradients is true. If you are
+    // using NumericDiffCostFunction and are interested in changing
+    // the step size for numeric differentiation in your cost
+    // function, please have a look at
+    // include/ceres/numeric_diff_options.h.
+    //
+    // Relative shift used for taking numeric derivatives when
+    // Solver::Options::check_gradients is true.
+    //
+    // For finite differencing, each dimension is evaluated at
+    // slightly shifted values; for the case of central difference,
+    // this is what gets evaluated:
     //
     //   delta = numeric_derivative_relative_step_size;
     //   f_initial  = f(x)
