diff --git a/libbdc/CMakeLists.txt b/libbdc/CMakeLists.txt
index 71a01ac02100100db3c113b2c65d98f7209f1df6..3a0a1b2d8eceab000d421bb17aabdc60a278f7d5 100644
--- a/libbdc/CMakeLists.txt
+++ b/libbdc/CMakeLists.txt
@@ -33,11 +33,13 @@ endif ()
 
 add_subdirectory(bdc_cross_platform)
 add_subdirectory(bdc_memory)
+add_subdirectory(bdc_time)
 
 add_library(bdc STATIC "")
 
 set_target_properties(bdc PROPERTIES LINKER_LANGUAGE C)
 set_property(TARGET bdc PROPERTY POSITION_INDEPENDENT_CODE ON)
 target_link_libraries(bdc
-                      bdc_memory)
+                      bdc_memory
+                      bdc_time)
 
diff --git a/libbdc/bdc_time/CMakeLists.txt b/libbdc/bdc_time/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2291ce8aebfb0c3eeb1d85ea092d238e0d70acc2
--- /dev/null
+++ b/libbdc/bdc_time/CMakeLists.txt
@@ -0,0 +1,11 @@
+add_library(bdc_time STATIC "" ../bdc_cross_platform/bdc_cross_platform.h)
+
+target_sources(bdc_time
+               PRIVATE
+               bdc_time.c
+               bdc_timer.c
+               PUBLIC
+               bdc_time.h
+               )
+
+set_property(TARGET bdc_time PROPERTY POSITION_INDEPENDENT_CODE ON)
diff --git a/libbdc/bdc_time/README.md b/libbdc/bdc_time/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2f214d4db1885d2bc8948a79c393a4b9e72b49c0
--- /dev/null
+++ b/libbdc/bdc_time/README.md
@@ -0,0 +1,7 @@
+# bdc_time
+
+
+This is a library to handle time.
+
+## Dependencies
+* bdc_cross_platform (header only)
\ No newline at end of file
diff --git a/src/cats_time/cats_time.c b/libbdc/bdc_time/bdc_time.c
similarity index 55%
rename from src/cats_time/cats_time.c
rename to libbdc/bdc_time/bdc_time.c
index 1806904b76bf78e7c021866a78f70e1e51122236..41bc4a6da3f07010050648f2a3d1563b80a99b31 100644
--- a/src/cats_time/cats_time.c
+++ b/libbdc/bdc_time/bdc_time.c
@@ -1,36 +1,41 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-//
-// cats_time.c
-//
-// Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 3 of the License, or (at
-// your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-//
+/*
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ * bdc_time.c
+ *
+ * Copyright (C) 2011-2022, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
 
 #include <time.h>
 #include <stdio.h>
-#include "cats_time.h"
 #include <sys/time.h>
-#ifdef CATS_ON_WINDOWS
+
+
+#include "bdc_time.h"
+
+#ifdef BDC_ON_WINDOWS
 #include <profileapi.h>
 #endif
 
 
 void get_time(struct timeval *tv)
 {
-#if defined(CATS_ON_WINDOWS) && ! defined(__MINGW32__)
+#if defined(BDC_ON_WINDOWS) && ! defined(__MINGW32__)
         struct timespec ts;
         timespec_get(&ts, TIME_UTC);
         tv->tv_sec = (long) ts.tv_sec;
@@ -42,9 +47,9 @@ void get_time(struct timeval *tv)
 }
 
 
-void time_now(struct cats_time *time_info)
+void time_now(struct bdc_time *time_info)
 {
-#ifdef CATS_ON_WINDOWS
+#ifdef BDC_ON_WINDOWS
         LARGE_INTEGER zero = {0};
         QueryPerformanceCounter(&time_info->clock_monotonic);
         if (time_info->clock_monotonic.QuadPart == zero.QuadPart) {
@@ -59,9 +64,9 @@ void time_now(struct cats_time *time_info)
 }
 
 
-double get_elapsed_seconds_monotonic(struct cats_time *start_time, struct cats_time *end_time)
+double get_elapsed_seconds_monotonic(struct bdc_time *start_time, struct bdc_time *end_time)
 {
-#ifdef CATS_ON_WINDOWS
+#ifdef BDC_ON_WINDOWS
         LARGE_INTEGER frequency;
         QueryPerformanceFrequency(&frequency);
         return (double) (end_time->clock_monotonic.QuadPart  -  start_time->clock_monotonic.QuadPart) / frequency.QuadPart;
@@ -73,9 +78,9 @@ double get_elapsed_seconds_monotonic(struct cats_time *start_time, struct cats_t
 }
 
 
-double seconds_monotonic_since(struct cats_time *start_time)
+double seconds_monotonic_since(struct bdc_time *start_time)
 {
-        struct cats_time now;
+        struct bdc_time now;
         time_now(&now);
         return get_elapsed_seconds_monotonic(start_time, &now);
 }
\ No newline at end of file
diff --git a/libbdc/bdc_time/bdc_time.h b/libbdc/bdc_time/bdc_time.h
new file mode 100644
index 0000000000000000000000000000000000000000..68ff82626a726d3e74142093c81ecad47158de97
--- /dev/null
+++ b/libbdc/bdc_time/bdc_time.h
@@ -0,0 +1,71 @@
+/*
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ * bdc_time.h
+ *
+ * Copyright (C) 2011-2022, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef BDC_TIME_H
+#define BDC_TIME_H
+
+
+#include <stdint.h>
+
+#ifdef BDC_ON_WINDOWS
+#include <winsock.h>
+#else
+#include <sys/time.h>
+#endif
+#include <time.h>
+struct bdc_time {
+
+// monotonic time stamps, used for total elapsed time
+#ifdef BDC_ON_WINDOWS
+        LARGE_INTEGER clock_monotonic;
+#else
+        struct timespec clock_monotonic;
+#endif
+
+        struct timeval current_time;
+};
+
+double seconds_monotonic_since(struct bdc_time *start_time);
+
+void time_now(struct bdc_time *time_info);
+
+double get_elapsed_seconds_monotonic(struct bdc_time *start_time, struct bdc_time *end_time);
+
+void get_time(struct timeval *tv);
+
+struct bdc_timer {
+        clock_t start_clock;
+        struct timeval start_timeval;
+        double time_normal;
+        double time_real;
+};
+
+
+
+struct bdc_timer start_new_timer(void);
+
+
+void start_timer(struct bdc_timer *t);
+
+void stop_timer(struct bdc_timer *t);
+#endif //BDC_TIME_H
diff --git a/libbdc/bdc_time/bdc_timer.c b/libbdc/bdc_time/bdc_timer.c
new file mode 100644
index 0000000000000000000000000000000000000000..321951d39041ea12dcb20500357f0fa5261b037c
--- /dev/null
+++ b/libbdc/bdc_time/bdc_timer.c
@@ -0,0 +1,68 @@
+#include <assert.h>
+#include <stdlib.h>
+
+#include "bdc_memory/bdc_memory.h"
+#include "bdc_time.h"
+
+
+
+struct timeval *time_difference(struct timeval *start, struct timeval *end)
+{
+        struct timeval *diff = malloc_or_die(sizeof(struct timeval));
+
+        if (start->tv_sec == end->tv_sec) {
+                diff->tv_sec = 0;
+                diff->tv_usec = end->tv_usec - start->tv_usec;
+        } else {
+                diff->tv_usec = 1000000 - start->tv_usec;
+                diff->tv_sec = end->tv_sec - (start->tv_sec + 1);
+                diff->tv_usec += end->tv_usec;
+
+                if (diff->tv_usec >= 1000000) {
+                        diff->tv_usec -= 1000000;
+                        diff->tv_sec += 1;
+                }
+        }
+
+        return diff;
+}
+
+
+struct bdc_timer start_new_timer(void)
+{
+        struct bdc_timer t = {0};
+        t.start_clock = clock();
+        get_time(&t.start_timeval);
+        return t;
+}
+
+
+void start_timer(struct bdc_timer *t)
+{
+        assert(t != NULL);
+        t->start_clock = clock();
+        get_time(&t->start_timeval);
+}
+
+
+void stop_timer(struct bdc_timer *t)
+{
+        assert(t != NULL);
+        clock_t now = clock();
+
+        struct timeval time_now;
+        double elapsed_time;
+        get_time(&time_now);
+        elapsed_time = ((double) (now - t->start_clock) / CLOCKS_PER_SEC);
+
+        t->time_normal = elapsed_time;
+
+        double difference_real;
+        struct timeval *difference;
+
+        difference = time_difference(&t->start_timeval, &time_now);
+        difference_real = (double) difference->tv_sec + (double) difference->tv_usec / (1000.0 * 1000.0);
+        t->time_real = difference_real;
+
+        free(difference);
+}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e371925d2de98e1b230a331d037562cc079a6055..ee838a3dbcd34a8adf2d1919a0445bdf80e93a0e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,5 @@
 add_subdirectory(logging)
 add_subdirectory(cats)
-add_subdirectory(cats_time)
 add_subdirectory(cats_strings)
 add_subdirectory(cats_ini)
 add_subdirectory(cats_csv)
diff --git a/src/cats/CMakeLists.txt b/src/cats/CMakeLists.txt
index 8b22d87d8b45477472fe06f06ea15ddfeddcd79f..66572ef47e0c98811b0a72b89bc8b53880826e49 100644
--- a/src/cats/CMakeLists.txt
+++ b/src/cats/CMakeLists.txt
@@ -44,8 +44,6 @@ target_include_directories(libcats PUBLIC ".")
 
 target_sources(libcats PRIVATE
                ../cats_defs.h
-               ../cats_time/cats_time.c
-               ../cats_time/cats_time.h
                defaults.h
 
 
@@ -218,8 +216,7 @@ target_sources(libcats PRIVATE
 
                performance/performance_stats.c
                performance/performance_stats.h
-               performance/timer.c
-               performance/timer.h
+               performance/timer.c performance/timer.h
 
                plants/clonal_growth.c
                plants/clonal_growth.h
diff --git a/src/cats/actions/actions_write_plantstats.c b/src/cats/actions/actions_write_plantstats.c
index 10d59e6781fb0dabe6645e161e50464cc0b2a439..47e2a66160155ac4f0f20aea7351ce0153b4f630 100644
--- a/src/cats/actions/actions_write_plantstats.c
+++ b/src/cats/actions/actions_write_plantstats.c
@@ -23,13 +23,14 @@
 #include <assert.h>
 #include "threading/threading-helpers.h"
 #include "configuration/configuration.h"
-#include "performance/timer.h"
+#include "bdc_time/bdc_time.h"
 #include "stats/grid_stats.h"
 #include "stats/global_stats.h"
 #include "actions/cats_actions.h"
 #include "inline_overlays.h"
 #include "inline_population.h"
 #include "inline.h"
+#include "performance/timer.h"
 
 #ifdef USEMPI
 #include "mpi/mpi_stats.h"
@@ -104,7 +105,7 @@ enum action_status action_write_plant_stats(struct cats_grid *grid, struct cats_
         if (conf->command_line_options.lambda_test) return ACTION_NOT_RUN;
 
         // calculate grid statistics
-        struct cats_timer timer = start_new_timer();
+        struct bdc_timer timer = start_new_timer();
         if (grid->id == 0) {
                 threaded_action(&area_gather_stats, grid, conf, TS_BLOCK);
         }
diff --git a/src/cats/actions/cats_actions.c b/src/cats/actions/cats_actions.c
index bf14c9f657a46adaa6b2f2e3934af848e08f50b4..c3bba803b47e9387db6ddcc98e45b68c14f4a7d9 100644
--- a/src/cats/actions/cats_actions.c
+++ b/src/cats/actions/cats_actions.c
@@ -24,6 +24,7 @@
 #include "configuration/configuration.h"
 #include "logging.h"
 #include "cats_actions.h"
+#include "bdc_time/bdc_time.h"
 #include "performance/timer.h"
 
 const char *status_strings[] = {"SKIPPED: ",
@@ -57,7 +58,7 @@ void run_simulation_phase(struct cats_grid **grid, struct cats_configuration *co
 
         log_message(LOG_MARK, "\nSTARTING %s %d", conf->time.phase_name, time);
         log_message(LOG_INFO, "CYCLE::START::%s::%d", conf->time.phase_name, time);
-        struct cats_timer year_timer = start_new_timer();
+        struct bdc_timer year_timer = start_new_timer();
         enum cats_simulation_stages stage = get_run_actions(conf);
 
 
@@ -67,7 +68,7 @@ void run_simulation_phase(struct cats_grid **grid, struct cats_configuration *co
                 }
                 conf->cycle.current_action = action;
 
-                struct cats_timer timer = start_new_timer();
+                struct bdc_timer timer = start_new_timer();
                 log_message(LOG_IMPORTANT, "START:   %s : %"PRId64"",
                             conf->cycle.actions[action].message, conf->cycle.action_counter);
                 bool did_run = false;
diff --git a/src/cats/actions/process_seed_dispersal.c b/src/cats/actions/process_seed_dispersal.c
index 061136de73816a4a17aaff9c9f92a4b6a8f5be91..c40287cea3e3a4c43618681ab351676ec46d5f7d 100644
--- a/src/cats/actions/process_seed_dispersal.c
+++ b/src/cats/actions/process_seed_dispersal.c
@@ -26,7 +26,7 @@
 #include "configuration/configuration.h"
 #include "logging.h"
 #include "plants/seeds.h"
-#include "performance/timer.h"
+#include "bdc_time/bdc_time.h"
 #include "grids/gdal_save.h"
 #include "dispersal/dispersal.h"
 #include "threading/threading.h"
@@ -41,6 +41,7 @@
 #include "inline_overlays.h"
 #include "actions/cats_actions.h"
 #include "temporal/years.h"
+#include "performance/timer.h"
 
 void area_post_process_seeds(struct cats_grid *grid, struct cats_thread_info *ts);
 
@@ -113,7 +114,7 @@ enum action_status process_disperse_seeds(struct cats_grid *grid, struct cats_co
         grid->stats.stats[CS_SEEDS_AFTER_POISSON] = 0;
         grid->stats.stats[CS_SEEDS_BEFORE_POISSON] = 0;
 
-        struct cats_timer timer = start_new_timer();
+        struct bdc_timer timer = start_new_timer();
         threaded_action(&dispersal_wrapper, grid, conf, TS_DISPERSAL);
 
         stop_log_and_restart_timer(&timer, "actual dispersal", LOG_INFO, &conf->time, conf);
diff --git a/src/cats/cats_global.h b/src/cats/cats_global.h
index d20ae66978311cce94c3718395a567d749270d2a..8b1eaa492fa68b7867442759675a5478725474f3 100644
--- a/src/cats/cats_global.h
+++ b/src/cats/cats_global.h
@@ -30,12 +30,11 @@
 //#error "CATS assumes IEC 559 support"
 #endif
 
-// INCLUDE STATEMENTS
 #include <stdio.h>
 #include <stdlib.h>
 
 #include "data/cats_datatypes.h"
-#include "cats_time/cats_time.h"
+#include "bdc_time/bdc_time.h"
 #include "cats_defs.h"
 #include "cats_windows.h"
 
@@ -68,7 +67,7 @@ struct cats_global {
         bool enable_json_output;
         char *program_name;
         int mpi_world_rank;
-        struct cats_time time_info;
+        struct bdc_time time_info;
         float poisson_dampening_factor;
         float poisson_dampening_minimum;
         float poisson_maximum;
diff --git a/src/cats/performance/timer.c b/src/cats/performance/timer.c
index 0ba6758d477058fab98cb0e1a694db6c516a2f44..652841be4d0bee3848a54b1f68f3cef55a790c37 100644
--- a/src/cats/performance/timer.c
+++ b/src/cats/performance/timer.c
@@ -54,9 +54,9 @@ struct timeval *time_difference(struct timeval *start, struct timeval *end)
 }
 
 
-struct cats_timer start_new_timer(void)
+struct bdc_timer start_new_timer(void)
 {
-        struct cats_timer t = {0};
+        struct bdc_timer t = {0};
         t.start_clock = clock();
         //gettimeofday(&t.start_timeval, NULL);
         get_time(&t.start_timeval);
@@ -64,7 +64,7 @@ struct cats_timer start_new_timer(void)
 }
 
 
-void start_timer(struct cats_timer *t)
+void start_timer(struct bdc_timer *t)
 {
         assert(t != NULL);
         t->start_clock = clock();
@@ -73,7 +73,7 @@ void start_timer(struct cats_timer *t)
 }
 
 
-void stop_timer(struct cats_timer *t)
+void stop_timer(struct bdc_timer *t)
 {
         assert(t != NULL);
         clock_t now = clock();
@@ -97,7 +97,7 @@ void stop_timer(struct cats_timer *t)
 }
 
 
-void log_timer(const struct cats_timer *t, const char *string, int loglevel, const struct simulation_time *time,
+void log_timer(const struct bdc_timer *t, const char *string, int loglevel, const struct simulation_time *time,
                const struct cats_configuration *conf)
 {
         const char *phase_default = "?";
@@ -117,7 +117,7 @@ void log_timer(const struct cats_timer *t, const char *string, int loglevel, con
 }
 
 
-void stop_and_log_timer(struct cats_timer *t, const char *string, int loglevel, const struct simulation_time *time,
+void stop_and_log_timer(struct bdc_timer *t, const char *string, int loglevel, const struct simulation_time *time,
                         const struct cats_configuration *conf)
 {
         stop_timer(t);
@@ -127,7 +127,7 @@ void stop_and_log_timer(struct cats_timer *t, const char *string, int loglevel,
 
 
 void
-stop_log_and_restart_timer(struct cats_timer *t, const char *string, int loglevel, const struct simulation_time *time,
+stop_log_and_restart_timer(struct bdc_timer *t, const char *string, int loglevel, const struct simulation_time *time,
                            const struct cats_configuration *conf)
 {
         stop_timer(t);
diff --git a/src/cats/performance/timer.h b/src/cats/performance/timer.h
index d926f771f916107244e6fb50034a7bd66078ad9c..bea6c4436e2e917fb352e4cae8f532d2debe9a04 100644
--- a/src/cats/performance/timer.h
+++ b/src/cats/performance/timer.h
@@ -22,28 +22,23 @@
 #pragma once
 
 #include "configuration/configuration.h"
+#include "bdc_time/bdc_time.h"
 
-struct cats_timer {
-        clock_t start_clock;
-        struct timeval start_timeval;
-        double time_normal;
-        double time_real;
-};
 
 struct simulation_time;
 
-struct cats_timer start_new_timer(void);
+struct bdc_timer start_new_timer(void);
 
-void log_timer(const struct cats_timer *t, const char *string, int loglevel, const struct simulation_time *time,
+void log_timer(const struct bdc_timer *t, const char *string, int loglevel, const struct simulation_time *time,
                const struct cats_configuration *conf);
 
-void start_timer(struct cats_timer *t);
+void start_timer(struct bdc_timer *t);
 
-void stop_timer(struct cats_timer *t);
+void stop_timer(struct bdc_timer *t);
 
-void stop_and_log_timer(struct cats_timer *t, const char *string, int loglevel, const struct simulation_time *time,
+void stop_and_log_timer(struct bdc_timer *t, const char *string, int loglevel, const struct simulation_time *time,
                         const struct cats_configuration *conf);
 
 void
-stop_log_and_restart_timer(struct cats_timer *t, const char *string, int loglevel, const struct simulation_time *time,
+stop_log_and_restart_timer(struct bdc_timer *t, const char *string, int loglevel, const struct simulation_time *time,
                            const struct cats_configuration *conf);
\ No newline at end of file
diff --git a/src/cats_strings/CMakeLists.txt b/src/cats_strings/CMakeLists.txt
index 8079a56dffc942207f8dae65f753b51a88a7cefc..1414340bcf846d1fb3daec3b9570fc1b58f5df98 100644
--- a/src/cats_strings/CMakeLists.txt
+++ b/src/cats_strings/CMakeLists.txt
@@ -14,4 +14,4 @@ target_sources(cats_strings
                )
 
 set_property(TARGET cats_strings PROPERTY POSITION_INDEPENDENT_CODE ON)
-target_link_libraries(cats_logging cats_time)
\ No newline at end of file
+target_link_libraries(cats_logging bdc_time)
\ No newline at end of file
diff --git a/src/cats_time/CMakeLists.txt b/src/cats_time/CMakeLists.txt
deleted file mode 100644
index 9824c9f00df8b4e0b6929e87ead54f597c5f5d92..0000000000000000000000000000000000000000
--- a/src/cats_time/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-add_library(cats_time STATIC "" ../cats_defs.h ../cats_windows.h)
-
-target_sources(cats_time
-               PRIVATE
-               cats_time.c cats_time.h
-               )
-
-set_property(TARGET cats_time PROPERTY POSITION_INDEPENDENT_CODE ON)
-target_link_libraries(cats_time)
\ No newline at end of file
diff --git a/src/cats_time/cats_time.h b/src/cats_time/cats_time.h
deleted file mode 100644
index 644945b1461fb67d6369c57e2ef9bb1b1b747fe5..0000000000000000000000000000000000000000
--- a/src/cats_time/cats_time.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-//
-// cats_time.h
-//
-// Copyright (C) 2011-2024, University of Vienna and Vienna Institute for Nature Conservation & Analyses, Andreas Gattringer.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 3 of the License, or (at
-// your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-//
-
-#ifndef CATS_CATS_TIME_H
-#define CATS_CATS_TIME_H
-
-#include "../cats_defs.h"
-#include <stdint.h>
-
-#ifdef CATS_ON_WINDOWS
-#include <winsock.h>
-#else
-#include <sys/time.h>
-#endif
-
-struct cats_time {
-
-// monotonic time stamps, used for total elapsed time
-#ifdef CATS_ON_WINDOWS
-        LARGE_INTEGER clock_monotonic;
-#else
-        struct timespec clock_monotonic;
-#endif
-
-        struct timeval current_time;
-};
-
-double seconds_monotonic_since(struct cats_time *start_time);
-
-void time_now(struct cats_time *time_info);
-
-double get_elapsed_seconds_monotonic(struct cats_time *start_time, struct cats_time *end_time);
-
-void get_time(struct timeval *tv);
-
-#endif //CATS_CATS_TIME_H
diff --git a/src/logging/logging.c b/src/logging/logging.c
index 601a5e0e2daa2c0d2d0add8a25d473093baeccd4..a7c0ed515b4fce7d30b8e52093d057f932008926 100644
--- a/src/logging/logging.c
+++ b/src/logging/logging.c
@@ -27,13 +27,13 @@
 #include <stdlib.h>
 #include "logging.h"
 #include "bdc_memory/bdc_memory.h"
-#include "cats_time/cats_time.h"
+#include "bdc_time/bdc_time.h"
 #include "misc/misc.h"
 
 
 enum cats_log_level internal_current_log_level = LOG_INFO;
 int32_t logging_mpi_rank = -1;
-struct cats_time cats_logging_start_time;
+struct bdc_time cats_logging_start_time;
 FILE *cats_log_file = NULL;
 char *cats_log_file_name = NULL;
 const char *logging_module_name = NULL;
@@ -109,7 +109,7 @@ void set_log_level(enum cats_log_level new_level)
 
 // - mpi world rank can be added later
 // FIXME: if start_time is NULL, generate
-void logging_initialize(enum cats_log_level level, const struct cats_time *start_time, const char *log_file_name, bool quiet)
+void logging_initialize(enum cats_log_level level, const struct bdc_time *start_time, const char *log_file_name, bool quiet)
 {
         set_log_level(level);
         logging_quiet = quiet;
diff --git a/src/logging/logging.h b/src/logging/logging.h
index a210501294b4d9cf051ab456307c93f310900a6f..52eefe767e846a4ffef06e4853a7241b5c901e65 100644
--- a/src/logging/logging.h
+++ b/src/logging/logging.h
@@ -24,7 +24,7 @@
 #include <stdbool.h>
 #include "cats_defs.h"
 #include <time.h>
-#include "cats_time/cats_time.h"
+#include "bdc_time/bdc_time.h"
 
 #if defined(__MINGW32__) || defined(CATS_ON_WINDOWS)
 // no color codes
@@ -55,7 +55,7 @@ enum cats_log_level {
         LOG_UNKNOWN
 };
 
-void logging_initialize(enum cats_log_level level, const struct cats_time *start_time, const char *log_file_name, bool quiet);
+void logging_initialize(enum cats_log_level level, const struct bdc_time *start_time, const char *log_file_name, bool quiet);
 
 void logging_set_mpi_rank(int mpi_world_rank);