A kMC simulation needs a list of all possible migration events within a given simulation cell prior to its execution. Therefore, in kMCpy, we handle migration events using the Event class in kmcpy.event. Event stores the indices of two sites (e.g., initial and final sites) involved in the migration event, as well as the indices of all sites within the surrounding migration unit, i.e., local environment indices. Event also has builtin functions to compute the correlation vector, the migration barrier and the hopping probability after an occupation vector has been assigned. We enumerate all Event objects prior to the kMC run using a wrapper function, event_generator.generate_events(), which receives the LocalClusterExpansion as input and loops through all migration units in the whole simulation cell to generate all possible events. From a given identifier of mobile species (i.e., the mobile_ion_identifier parameter), two sites indices involved in the migration event, namely, sites that the ion hops from and hops into, are identified. Subsequently, the indices of all sites in the current migration unit are stored for calculating the migration barrier.