def product(target, prop1, prop2, **kwargs):
    """
    Calculates the product of multiple property values

    Parameters
    ----------
    target : OpenPNM Object
        The object which this model is associated with. This controls the
        length of the calculated array, and also provides access to other
        necessary properties.

    prop1 : string
        The name of the first argument

    prop2 : string
        The name of the second argument

    Returns
    -------
    value : NumPy ndarray
        Array containing product values of ``target[prop1]``, ``target[prop2]``

    Notes
    -----
    Additional properties can be specified beyond just ``prop1`` and ``prop2``
    by including additional arguments in the function call (i.e. ``prop3 =
    'pore.foo'``).

    """
    value = target[prop1] * target[prop2]
    for item in kwargs.values():
        value *= target[item]
    return value
