def select_solvent(topology, cutoff=0.6):
    """
    Compute solvent molecules with a maximum of `cutoff` distance away from an
    atom selection

    :param topology:        atom selection to compute solvent content of
    :type topology:         :interact:TopologyDataFrame
    :param cutoff:          cutoff distance in nm.
    :type cutoff:           :py:float

    :return:                new TopologyDataFrame with solvent selection
    :rtype:                 :interact:TopologyDataFrame
    """
    solvent = topology._parent[(topology._parent['resName'] == 'HOH') & (
        topology._parent['name'] == 'O')]
    sol_distances = topology.distances(target=solvent)
    contacts = sol_distances.loc[topology['serial'], solvent['serial']]
    contacts = contacts.unstack().reset_index()
    contacts.columns = ['target', 'source', 'distance']
    interface_solvents = contacts.loc[contacts['distance'] <= cutoff, 'target']
    interface_solvents = topology._parent[topology._parent['serial'].isin(
        set(interface_solvents))]
    return interface_solvents.extend()
