def loadSV(fname, shape=None, titles=None, aligned=False, byteorder=None,  
           renamer=None, **kwargs):
    [columns, metadata] = loadSVcols(fname, **kwargs)
    if 'names' in metadata.keys():
        names = metadata['names']
    else:
        names = None
    if 'formats' in metadata.keys():
        formats = metadata['formats']
    else:
        formats = None
    if 'dtype' in metadata.keys():
        dtype = metadata['dtype']
    else:
        dtype = None
    if renamer is not None:
        print 'Trying user-given renamer ...'
        renamed = renamer(names)
        if len(renamed) == len(uniqify(renamed)):
            names = renamed
            print '''... using renamed names (original names will be in return 
                     metadata)'''
        else:
            print '... renamer failed to produce unique names, not using.'
    if names and len(names) != len(uniqify(names)):
        print 'Names are not unique, reverting to default naming scheme.'
        names = None
    return [utils.fromarrays(columns, type=np.ndarray, dtype=dtype, 
                             shape=shape, formats=formats, names=names, 
                             titles=titles, aligned=aligned, 
                             byteorder=byteorder), metadata]