def composition_planner(program=None, method=None, basis=None, driver=None,
    keywords=None):
    """
    Plans out a given query into multiple pieces
    """
    base = {'program': program, 'method': method, 'basis': basis, 'driver':
        driver, 'keywords': keywords}
    if '-d3' in method.lower() and 'dftd3' != program.lower(
        ) and 'hessian' != driver.lower():
        dftd3keys = {'program': 'dftd3', 'method': method, 'basis': None,
            'driver': driver, 'keywords': None}
        base['method'] = method.lower().split('-d3')[0]
        return [dftd3keys, base]
    else:
        return [base]
