def get_params(param_list, value_list=None):
    """Collect additional params to be used for XSL params

    :param list param_list: a list of params; usually specified in the migration module with `PARAM_LIST` constant
    :param list value_list: a list of values to be used when constructing the params dictionary; if this is not
        provided then the user will be prompted to enter a value for each param
    :return: a dictionary of params to be use in the XSL
    :rtype: dict
    """
    params = dict()
    for i, param in enumerate(param_list):
        if value_list:
            try:
                assert len(param_list) == len(value_list)
            except AssertionError:
                raise ValueError("incompatible lengths for param_list and value_list; they should be equal")
            param_value = value_list[i]
        else:
            param_value = input("{}: ".format(param))
        params[param] = param_value
    return params