diff --git a/gso/utils/helpers.py b/gso/utils/helpers.py
index 93f77f9e32206a5275b2c06fcf61b791c4d341d1..04dfda72217bd9b68cf7a01d95a97cca5c3091d7 100644
--- a/gso/utils/helpers.py
+++ b/gso/utils/helpers.py
@@ -72,7 +72,7 @@ def available_interfaces_choices(router_id: UUID, speed: str) -> Choice | None:
 
 
 def available_interfaces_choices_including_current_members(
-    router_id: UUID | UUIDstr,
+    router_id: UUID,
     speed: str,
     interfaces: list[IptrunkInterfaceBlock],
 ) -> Choice | None:
@@ -113,14 +113,14 @@ def available_lags_choices(router_id: UUID) -> Choice | None:
     return Choice("ae iface", zip(side_a_ae_iface_list, side_a_ae_iface_list, strict=True))  # type: ignore[arg-type]
 
 
-def get_router_vendor(router_id: UUID) -> str:
+def get_router_vendor(router_id: UUID) -> RouterVendor:
     """Retrieve the vendor of a router.
 
     :param router_id: The :term:`UUID` of the router.
     :type router_id: :class:`uuid.UUID`
 
     :return: The vendor of the router.
-    :rtype: str:
+    :rtype: RouterVendor:
     """
     return Router.from_subscription(router_id).vendor
 
diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py
index f490243fb077ba0343be03764189d1580e908de1..8b44b4519bbf0ed1f11e5cf8f93fb4ee18759128 100644
--- a/gso/workflows/iptrunk/create_iptrunk.py
+++ b/gso/workflows/iptrunk/create_iptrunk.py
@@ -17,7 +17,6 @@ from gso.products.product_blocks.iptrunk import (
     IptrunkType,
     PhyPortCapacity,
 )
-from gso.products.product_blocks.router import RouterVendor
 from gso.products.product_types.iptrunk import IptrunkInactive, IptrunkProvisioning
 from gso.products.product_types.router import Router, RouterVendor
 from gso.services import infoblox, provisioning_proxy, subscriptions
diff --git a/gso/workflows/iptrunk/modify_trunk_interface.py b/gso/workflows/iptrunk/modify_trunk_interface.py
index 008c37a8341809dd8acc238166f3b234de8884ae..34873f754e700268779197e3bbf81d8ea2683405 100644
--- a/gso/workflows/iptrunk/modify_trunk_interface.py
+++ b/gso/workflows/iptrunk/modify_trunk_interface.py
@@ -280,7 +280,6 @@ def allocate_interfaces_in_netbox(subscription: Iptrunk, previous_ae_members: di
 
     Attach the :term:`LAG` interfaces to the physical interfaces detach old ones from the :term:`LAG`.
     """
-
     for index, side in enumerate(subscription.iptrunk.iptrunk_sides):
         nbclient = NetboxClient()
         if get_router_vendor(side.iptrunk_side_node.owner_subscription_id) == RouterVendor.NOKIA:
diff --git a/gso/workflows/router/create_router.py b/gso/workflows/router/create_router.py
index c69a78ff3bedb21287540d9bff2201ae7053cb0c..963121735d40c7c401d43f3261133d599e466afb 100644
--- a/gso/workflows/router/create_router.py
+++ b/gso/workflows/router/create_router.py
@@ -107,7 +107,7 @@ def initialize_subscription(
 
 
 @step("Allocate loopback interfaces in IPAM")
-def ipam_allocate_loopback(subscription: RouterProvisioning) -> State:  # noqa: FBT001
+def ipam_allocate_loopback(subscription: RouterProvisioning) -> State:
     """Allocate :term:`IPAM` resources for the loopback interface."""
     fqdn = subscription.router.router_fqdn
     loopback_v4, loopback_v6 = infoblox.allocate_host(f"lo0.{fqdn}", "LO", [fqdn], str(subscription.subscription_id))
diff --git a/gso/workflows/tasks/import_router.py b/gso/workflows/tasks/import_router.py
index 461aa2e7d638b82bfce5f27614f569df2d0a2cae..ea3d6acf3806e9e3ca8f504a4763d79db40b55dc 100644
--- a/gso/workflows/tasks/import_router.py
+++ b/gso/workflows/tasks/import_router.py
@@ -43,8 +43,6 @@ def create_subscription(customer: str, router_vendor: RouterVendor) -> State:
         product_id = subscriptions.get_product_id_by_name(ProductType.NOKIA_ROUTER)
     elif router_vendor == RouterVendor.JUNIPER:
         product_id = subscriptions.get_product_id_by_name(ProductType.JUNIPER_ROUTER)
-    else:
-        raise ValueError(f"Unknown router vendor: {router_vendor}")
 
     subscription = RouterInactive.from_product_id(product_id, customer_id)
 
diff --git a/requirements.txt b/requirements.txt
index f38f6cd3070d5eb8b429e6049bee79a82d4b99ed..c2e839b44147878595c0f59457a07a06d7c90936 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -7,6 +7,8 @@ celery-redbeat==2.1.1
 celery==5.3.4
 
 # Test and linting dependencies
+celery-stubs==0.1.3
+types-requests==2.31.0.1
 pytest==7.4.3
 faker==19.13.0
 responses==0.24.0
diff --git a/test/utils/test_helpers.py b/test/utils/test_helpers.py
index 0e93c2aa9fefa59025738bf1934b8b4738784ddc..a0f77451522bb62baa45e624350e92bbcd0cb796 100644
--- a/test/utils/test_helpers.py
+++ b/test/utils/test_helpers.py
@@ -3,7 +3,7 @@ from unittest.mock import patch
 import pytest
 
 from gso.products.product_blocks.iptrunk import IptrunkInterfaceBlock
-from gso.products.product_blocks.router import RouterVendor
+from gso.products.product_types.router import RouterVendor
 from gso.utils.helpers import available_interfaces_choices_including_current_members
 
 
@@ -22,20 +22,20 @@ def mock_netbox_client():
 
 
 def test_non_nokia_router_returns_none(mock_router, faker):
-    mock_router.from_subscription.return_value.router.router_vendor = RouterVendor.JUNIPER
+    mock_router.from_subscription.return_value.vendor = RouterVendor.JUNIPER
     result = available_interfaces_choices_including_current_members(faker.uuid4(), "10G", [])
     assert result is None
 
 
 def test_nokia_router_with_no_interfaces_returns_empty_choice(mock_router, mock_netbox_client, faker):
-    mock_router.from_subscription.return_value.router.router_vendor = RouterVendor.NOKIA
+    mock_router.from_subscription.return_value.vendor = RouterVendor.NOKIA
     mock_netbox_client().get_available_interfaces.return_value = iter([])
     result = available_interfaces_choices_including_current_members(faker.uuid4(), "10G", [])
     assert len(result) == 0
 
 
 def test_nokia_router_with_interfaces_returns_choice(mock_router, mock_netbox_client, faker):
-    mock_router.from_subscription.return_value.router.router_vendor = RouterVendor.NOKIA
+    mock_router.from_subscription.return_value.vendor = RouterVendor.NOKIA
     mock_netbox_client().get_available_interfaces.return_value = iter(
         [
             {"name": "interface1", "module": {"display": "module1"}, "description": "desc1"},
diff --git a/tox.ini b/tox.ini
index 8ecdb7ee7d0ad52e4117b89299c2fffec35105c2..02437f720ac1159df27281b195faf1f44ff7ed70 100644
--- a/tox.ini
+++ b/tox.ini
@@ -10,8 +10,6 @@ setenv =
     OAUTH2_ACTIVE = False
 deps =
     coverage
-    types-requests
-    celery-stubs
     -r requirements.txt
 
 commands =