diff --git a/src/modules/butterflies/butterflies_actions.c b/src/modules/butterflies/butterflies_actions.c
index 882a9593b611499e814a300de07610f60e3efe21..0fe97aa6b989a6689f20f2386a55d624e1e04ae6 100644
--- a/src/modules/butterflies/butterflies_actions.c
+++ b/src/modules/butterflies/butterflies_actions.c
@@ -7,7 +7,7 @@
 #include "butterflies_main.h"
 #include "inline_overlays.h"
 #include "butterflies_populations.h"
-#include "random_walk.h"
+
 #include "butterflies_inline.h"
 #include "grids/grid_wrapper.h"
 #include "grids/gdal_save.h"
@@ -16,6 +16,8 @@
 #include "populations/population.h"
 #include "inline_population.h"
 #include "butterflies_generations.h"
+#include "butterflies_dispersal.h"
+#include "butterflies_overlays.h"
 
 
 inline void increase_custom_stat(struct statistics stats, int64_t stat_id, int64_t by)
@@ -86,7 +88,7 @@ void grid_butterflies_dispersal(struct cats_grid *grid, struct cats_thread_info
                                 continue;
                         }
 
-                        butterflies_random_walk(grid, ts, row, col, false);
+                        butterflies_cell_dispersal(grid, ts, row, col, false);
                 }
         }
         // if (ts->temp)   printf("thread %d: %ld random walks (%ld cells) avg %f\n", ts->id, ts->temp, ts->temp1, (float) ts->temp / (float) ts->temp1);
@@ -222,7 +224,7 @@ enum action_status action_butterfly_update_generations(struct cats_grid *grid, s
                 grid->param.initial_population.adjusted = true;
         }
 
-        threaded_action(&grid_update_generations, grid, conf, TS_DEFAULT);
+        threaded_action(&area_update_generations, grid, conf, TS_DEFAULT);
         return ACTION_RUN;
 }
 
@@ -242,45 +244,13 @@ void reset_info_layer(const struct cats_grid *grid, struct grid_data_butterflies
 
 enum action_status action_butterflies_update_overlays(struct cats_grid *grid, struct cats_configuration *conf)
 {
-
-        int module_id = CATS_MODULE_ID;
-        struct grid_data_butterflies *data = grid->grid_modules[module_id].module_data;
-
-        if (conf->overlays.have_overlays == false) {
-                return ACTION_NOT_RUN;
-        }
-
-
-        const cats_dt_coord rows = grid->dimension.rows;
-        const cats_dt_coord cols = grid->dimension.cols;
-
-        for (cats_dt_coord row = 0; row < rows; row++) {
-                for (cats_dt_coord col = 0; col < cols; col++) {
-                        data->info_layer[row][col] = BF_CELL_CLEAR;
-
-                        if (cell_excluded_by_overlay(conf, row, col)) {
-                                data->info_layer[row][col] |= BF_CELL_EXCLUDED;
-                        }
-
-                        if (conf->overlays.overlay[OL_HABITAT_TYPE_CC].enabled &&
-                            conf->overlays.habitat_cc->data[row][col] > 0) {
-                                data->info_layer[row][col] |= BF_CELL_HABITAT_OK;
-                        }
-
-                        if (conf->overlays.overlay[OL_RESOURCE].enabled &&
-                            conf->overlays.resources->data[row][col] > 0) {
-                                data->info_layer[row][col] |= BF_CELL_RESOURCE_AVAILABLE;
-                        }
-                }
-        }
-
-        return ACTION_RUN;
+        return butterflies_update_overlays(conf, grid);
 }
 
 
 enum action_status action_finish_generation(struct cats_grid *grid, struct cats_configuration *conf)
 {
-        int module_id = CATS_MODULE_ID;
+        const int module_id = CATS_MODULE_ID;
 
         struct grid_data_butterflies *data = grid->grid_modules[module_id].module_data;