diff --git a/.bazelrc b/.bazelrc
new file mode 100644
index 0000000000000000000000000000000000000000..037e0e10a46a798b720bd8f141fd2f5162542c0b
--- /dev/null
+++ b/.bazelrc
@@ -0,0 +1 @@
+build --cxxopt='-std=c++17'
diff --git a/WORKSPACE b/WORKSPACE
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..faf98706cca77a7b11bfca857412073e4f513684 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -0,0 +1,11 @@
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("//bazel:deps.bzl", "mantle_api_deps")
+
+http_archive(
+    name = "googletest",
+    sha256 = "81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2",
+    strip_prefix = "googletest-release-1.12.1",
+    url = "https://github.com/google/googletest/archive/refs/tags/release-1.12.1.tar.gz",
+)
+
+mantle_api_deps()
diff --git a/bazel/BUILD b/bazel/BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/bazel/deps.bzl b/bazel/deps.bzl
new file mode 100644
index 0000000000000000000000000000000000000000..716058dbad068e124ef8e741701610d196e65b9e
--- /dev/null
+++ b/bazel/deps.bzl
@@ -0,0 +1,17 @@
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
+
+ECLIPSE_GITLAB = "https://gitlab.eclipse.org/eclipse"
+
+UNITS_TAG = "2.3.3"
+
+def mantle_api_deps():
+    """Load dependencies"""
+    maybe(
+        http_archive,
+        name = "units_nhh",
+        url = "https://github.com/nholthaus/units/archive/refs/tags/v{tag}.tar.gz".format(tag = UNITS_TAG),
+        sha256 = "b1f3c1dd11afa2710a179563845ce79f13ebf0c8c090d6aa68465b18bd8bd5fc",
+        strip_prefix = "./units-{tag}".format(tag = UNITS_TAG),
+        build_file = "//bazel:units.BUILD",
+    )
diff --git a/bazel/units.BUILD b/bazel/units.BUILD
new file mode 100644
index 0000000000000000000000000000000000000000..fafe847755e24e3fb2c2cd5830577964d8533ade
--- /dev/null
+++ b/bazel/units.BUILD
@@ -0,0 +1,8 @@
+cc_library(
+    name = "units_nhh",
+    hdrs = ["include/units.h"],
+    includes = [
+        "include/",
+    ],
+    visibility = ["//visibility:public"],
+)
diff --git a/test/MantleAPI/Test/test_utils.h b/test/MantleAPI/Test/test_utils.h
old mode 100755
new mode 100644
index 75b0d4cdda269c63062badb5d2ed035ca15b0397..1347bb106861d91d3994a97110cdf3dcc1fc88b6
--- a/test/MantleAPI/Test/test_utils.h
+++ b/test/MantleAPI/Test/test_utils.h
@@ -298,13 +298,10 @@ public:
   {
   }
 
-  mantle_api::IVehicle& Create(const std::string& name,
-                               const mantle_api::VehicleProperties& properties) override
-  {
-    std::ignore = name;
-    std::ignore = properties;
-    return test_vehicle_;
-  }
+  MOCK_METHOD(mantle_api::IVehicle&,
+              Create,
+              (const std::string& name, const mantle_api::VehicleProperties& properties),
+              (override));
 
   mantle_api::IVehicle& Create(mantle_api::UniqueId id,
                                const std::string& name,
@@ -478,26 +475,26 @@ public:
 
 class MockTrafficSwarmService : public mantle_api::ITrafficSwarmService
 {
-  public:
-    MOCK_METHOD(std::vector<ITrafficSwarmService::SpawningPosition>,
-                GetAvailableSpawningPoses,
-                (),
-                (const, override));
-
-    MOCK_METHOD(mantle_api::VehicleProperties,
-                GetVehicleProperties,
-                (mantle_api::VehicleClass),
-                (const, override));
-
-    MOCK_METHOD(void,
-                UpdateControllerConfig,
-                (std::unique_ptr<mantle_api::ExternalControllerConfig>&, units::velocity::meters_per_second_t),
-                (override));
-
-    MOCK_METHOD(void,
-                SetSwarmEntitiesCount,
-                (size_t),
-                (override));
+public:
+  MOCK_METHOD(std::vector<ITrafficSwarmService::SpawningPosition>,
+              GetAvailableSpawningPoses,
+              (),
+              (const, override));
+
+  MOCK_METHOD(mantle_api::VehicleProperties,
+              GetVehicleProperties,
+              (mantle_api::VehicleClass),
+              (const, override));
+
+  MOCK_METHOD(void,
+              UpdateControllerConfig,
+              (std::unique_ptr<mantle_api::ExternalControllerConfig>&, units::velocity::meters_per_second_t),
+              (override));
+
+  MOCK_METHOD(void,
+              SetSwarmEntitiesCount,
+              (size_t),
+              (override));
 };
 
 class MockEnvironment : public mantle_api::IEnvironment
diff --git a/test/interface_test.cpp b/test/interface_test.cpp
index 97f177879d69aca4f25c29e1e79bcbdf9eb52acd..0b2a8911e2066be2964da1d81432f34f7dc13591 100644
--- a/test/interface_test.cpp
+++ b/test/interface_test.cpp
@@ -35,6 +35,11 @@ TEST(InterfaceTest, GivenTeleportAction_When_ThenHostVehicleIsPlaced)
   vehicle_properties.model = "G12";
 
   auto& repo = env.GetEntityRepository();
+
+  mantle_api::MockVehicle mock_vehicle{};
+  ON_CALL(dynamic_cast<mantle_api::MockEntityRepository&>(repo), Create(testing::_, vehicle_properties))
+      .WillByDefault(testing::ReturnRef(mock_vehicle));
+
   auto& host_vehicle = repo.Create("host", vehicle_properties);
   const auto* const converter = env.GetConverter();
   auto world_pos = converter->Convert(inert_pos);