def make_reconstruction(KK, csd_profile, csd_seed, total_ele,
                        ele_lims=None, noise=0, nr_broken_ele=None,
                        Rs=None, lambdas=None, method='cross-validation'):
    """
    Main method, makes the whole kCSD reconstruction.

    Parameters
    ----------
    KK: instance of the class
        Instance of class ValidateKCSD1D.
    csd_profile: function
        Function to produce csd profile.
    csd_seed: int
        Seed for random generator to choose random CSD profile.
    total_ele: int
        Number of electrodes.
    ele_lims: list
        Electrodes limits.
        Default: None.
    noise: float
        Determines the level of noise in the data.
        Default: 0.
    nr_broken_ele: int
        How many electrodes are broken (excluded from analysis)
        Default: None.
    Rs: numpy 1D array
        Basis source parameter for crossvalidation.
        Default: None.
    lambdas: numpy 1D array
        Regularization parameter for crossvalidation.
        Default: None.
    method: string
        Determines the method of regularization.
        Default: cross-validation.

    Returns
    -------
    k: instance of the class
        Instance of class KCSD1D.
    csd_at: numpy array
        Where to generate CSD.
    true_csd: numpy array
        CSD at csd_at positions.
    ele_pos: numpy array
        Electrodes positions.
    pots: numpy array
        Potentials measured (calculated) on electrodes.
    """
    csd_at, true_csd = KK.generate_csd(csd_profile, csd_seed)
    ele_pos, pots = KK.electrode_config(csd_profile, csd_seed, total_ele,
                                        ele_lims, KK.h, KK.sigma,
                                        noise, nr_broken_ele)
    k, est_csd = KK.do_kcsd(pots, ele_pos, method=method, Rs=Rs,
                            lambdas=lambdas)
    return k, csd_at, true_csd, ele_pos, pots