def camelcase_to_lowercase(camelcase_input, python_input=None):
    
    '''
        a function to recursively convert data with camelcase key names into lowercase keys 
        
    :param camelcase_input: list or dictionary with camelcase keys 
    :param python_input: [optional] list or dictionary with default lowercase keys in output
    :return: dictionary with lowercase key names
    '''
    
    if python_input:
        if camelcase_input.__class__ != python_input.__class__:
            raise ValueError('python_input type %s does not match camelcase_input type %s' % (python_input.__class__, camelcase_input.__class__))
    if isinstance(camelcase_input, dict):
        return _to_python_dict(camelcase_input, python_input)
    elif isinstance(camelcase_input, list):
        return _ingest_list(camelcase_input, _to_python_dict, python_input)
    else:
        return camelcase_input