diff --git a/src/cats/actions/setup_actions.c b/src/cats/actions/setup_actions.c
index 1c03f487fcc98b0dbbaf28132177801f26e7aa3c..cbb02e12130d39a5b3a6f5da9ca22ae6bfc86615 100644
--- a/src/cats/actions/setup_actions.c
+++ b/src/cats/actions/setup_actions.c
@@ -160,7 +160,7 @@ append_action(struct cats_configuration *conf, action_function action, enum cats
 
 void list_actions_full(struct cats_configuration *conf)
 {
-        log_message(LOG_INFO, "Action functions: %d", conf->action_functions.count);
+        log_message(LOG_INFO, "Number of registered action functions: %d", conf->action_functions.count);
         for (int32_t i = 0; i < conf->action_functions.count; i++) {
                 log_message(LOG_INFO, "%d: %s %p ", i, conf->action_functions.names[i],
                             conf->action_functions.functions[i]);
diff --git a/src/cats/cats.c b/src/cats/cats.c
index c3950e5d22aad84f74bf4f19e89657df2d55e51d..35421684be7e521978c39b41aaaeb81c04409d5f 100644
--- a/src/cats/cats.c
+++ b/src/cats/cats.c
@@ -130,8 +130,8 @@ void load_modules(struct cats_configuration *conf)
 {
         for (int32_t i = 0; i < conf->modules.found_count; i++) {
                 int32_t id = load_module(conf, &conf->modules.module[i]);
-                printf("%s: %d/%d-> %d (%d)\n", conf->modules.module[i].name, i, conf->modules.count, id,
-                       conf->modules.module[i].flags);
+                log_message(LOG_IMPORTANT, "Loaded module %d of %d: '%s' with id %d and flags %d",
+                            i + 1, conf->modules.count, conf->modules.module[i].name, id, conf->modules.module[i].flags);
         }
 
         for (int32_t i = 0; i < conf->param_count; i++) {
@@ -162,8 +162,8 @@ void load_modules(struct cats_configuration *conf)
 
                         }
 
+                        log_message(LOG_INFO, "%s: Loading vital rate functions for module id %d", __func__, j);
 
-                                printf("%s: %d\n", __func__, j);
                                 if (p->module_data[j].load_species_param_function) {
                                         p->module_data[j].load_species_param_function(conf, conf->ini, p->species_config_section, p);
                                 }
@@ -189,7 +189,7 @@ struct cats_configuration *load_main_configuration(const struct program_options
         load_modules(conf);
         setup_module_directories(conf);
 
-        print_modules(conf);
+
         setup_simulation_actions(conf);
         // which values of the configuration file did we ignore?
         return conf;
diff --git a/src/cats/configuration/load_configuration_species_params.c b/src/cats/configuration/load_configuration_species_params.c
index 6480603f9cefefe6791eb551c4d7a3e0fb1ab827..7dd39c2c691c6c97b8eb2d199e341cfebc42cabc 100644
--- a/src/cats/configuration/load_configuration_species_params.c
+++ b/src/cats/configuration/load_configuration_species_params.c
@@ -102,7 +102,8 @@ void load_conf_vital_rate(struct cats_vital_rate *vr, struct cats_configuration
         char *vital_rate_maximum = compound_string(vr_name, "maximum", " ");
 
         bool req = !vr->preset.have_maximum;
-        printf("%s: %s required %d\n", __func__, vr->name, req);
+        log_message(LOG_INFO, "%s: Loading vital rate '%s' (required: %d)", __func__, vr->name, req);
+
         if (vr == &p->carrying_capacity) req = true;
         bool have_max = load_conf_value(req, ini, species_section, vital_rate_maximum, &vr->max_rate);
         if (vr->is_integer_quantity) {
diff --git a/src/cats/configuration/print_configuration.c b/src/cats/configuration/print_configuration.c
index e257a4d5ef80877a85610797c9cd42c523af9fce..354441404cfa31a85ae43a654974898556f9785a 100644
--- a/src/cats/configuration/print_configuration.c
+++ b/src/cats/configuration/print_configuration.c
@@ -32,6 +32,7 @@
 #include "preset.h"
 #include "inline_vital_rates.h"
 #include "dispersal/dispersal.h"
+#include "modules/load_module.h"
 
 const char *get_dispersal_name(enum dispersal_type type);
 
@@ -204,6 +205,8 @@ void print_config_summary(struct cats_configuration *conf)
         printf("%s\n", TEXT_DIVIDER);
         print_environment_sets(conf);
         printf("%s\n", TEXT_DIVIDER);
+        print_modules(conf);
+        printf("%s\n", TEXT_DIVIDER);
 }
 
 
diff --git a/src/cats/grids/gdal_helper.c b/src/cats/grids/gdal_helper.c
index f0640cec57a6485de7d10f3bdd17740abe09c770..4a924ab9d2c4b2eae4771f1a7c038418f992aab3 100644
--- a/src/cats/grids/gdal_helper.c
+++ b/src/cats/grids/gdal_helper.c
@@ -166,7 +166,7 @@ void verify_raster_geometry(GDALDatasetH dataset, struct simulation_geometry *ge
 
         char *projection = (char *) GDALGetProjectionRef(dataset);
         if (geometry->projection_string == NULL || strlen(geometry->projection_string) == 0) {
-                log_message(LOG_WARNING, "GEOM: global projection string not set, ignoring projection '%s", projection);
+                log_message(LOG_INFO, "GEOM: global projection string not set, ignoring projection '%s'", projection);
         } else {
                 if (strcmp(projection, geometry->projection_string) != 0) {
                         enum cats_log_level ll;
diff --git a/src/cats/lambda/leslie_matrix.c b/src/cats/lambda/leslie_matrix.c
index 9f047a6bda37dd68be333d17290d74492b7c0a73..dbc005b8cc8361f46c3f5268b45e159d748756b7 100644
--- a/src/cats/lambda/leslie_matrix.c
+++ b/src/cats/lambda/leslie_matrix.c
@@ -60,8 +60,14 @@ calculate_rate_for_matrix(struct cats_vital_rate *rate,
         cats_dt_rates value = calculate_rate(rate, N, param, l_param->grid, l_param->row, l_param->col, &override);
 
         if (print) {
-                log_message(LOG_INFO, "%s: %Lf (maximum %Lf) for population %Lf/%Lf",
-                            rate->name, value, rate->max_rate, N, K);
+                if (param->parametrization == PARAM_HYBRID) {
+                        log_message(LOG_INFO, "%s: %Lf (maximum %Lf) for population %Lf/%Lf at suitability %Lf",
+                                    rate->name, value, rate->max_rate, N, K, l_param->suitability);
+                } else {
+                        log_message(LOG_INFO, "%s: %Lf (maximum %Lf) for population %Lf/%Lf",
+                                    rate->name, value, rate->max_rate, N, K);
+                }
+
         }
 
         return value;
diff --git a/src/cats/modules/load_module.c b/src/cats/modules/load_module.c
index f1960ba580c575e89964399ca0eca2ea85808bae..0b8a734b22c88a465f6c1fdc4ab01805fd33c949 100644
--- a/src/cats/modules/load_module.c
+++ b/src/cats/modules/load_module.c
@@ -149,7 +149,7 @@ void register_load_species_param_config_func(struct cats_configuration *conf, ca
 void register_create_leslie_matrix_func(struct cats_configuration *conf, cats_leslie_matrix_func func)
 {
         conf->modules.module[CATS_MODULE_ID].create_leslie_matrix = func;
-        printf("LESLIE MATRIX FUNC: %p\n", conf->modules.module[CATS_MODULE_ID].create_leslie_matrix);
+        log_message(LOG_INFO, "Using leslie matrix function at address %p", conf->modules.module[CATS_MODULE_ID].create_leslie_matrix);
 }