diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ca7fe0a..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-*.pyc
-__pycache__
-.cache
-.tox
-.eggs
-*.egg-info
diff --git a/picovico/__init__.py b/picovico/__init__.py
index 81dadc4..7e14d3d 100644
--- a/picovico/__init__.py
+++ b/picovico/__init__.py
@@ -1,5 +1,5 @@
 from .session import PicovicoSessionMixin
-from .base import PicovicoRequest
+from .baserequest import PicovicoRequest
 from .components import PicovicoComponentMixin
 from .decorators import pv_auth_required
 from . import urls as pv_urls
@@ -12,7 +12,7 @@ class PicovicoAPI(PicovicoSessionMixin, PicovicoComponentMixin):
         if self.is_authorized():
             self._ready_component_property()
 
-    
+
     def login(self, username, password):
         """ Picovico: login with username and password """
         assert username, 'username is required for login'

Categorize URL config based on API endpoints.
The URL endpoints should clearly define the workflow. They should be categorized.
diff --git a/tests/pv_api_test.py b/tests/pv_api_test.py
index 377a51a..e368fe8 100644
--- a/tests/pv_api_test.py
+++ b/tests/pv_api_test.py
@@ -13,7 +13,7 @@ class TestPicovicoAPI:
         post_call = method_calls.get('post').copy()
         with pytest.raises(pv_exceptions.PicovicoAPINotAllowed):
             api.me()
-        with mock.patch('picovico.base.requests.request') as mr:
+        with mock.patch('picovico.baserequest.requests.request') as mr:
             mr.return_value = auth_response
             api.login(*calls[2:])
             post_call.update(data=dict(zip(calls, calls)), url=parse.urljoin(pv_urls.PICOVICO_BASE, pv_urls.PICOVICO_LOGIN))
@@ -42,13 +42,13 @@ class TestPicovicoAPI:
         assert not api.is_authorized()
 
     def test_login_authenticate(self, auth_response):
-        with mock.patch('picovico.base.requests.request') as mr:
+        with mock.patch('picovico.baserequest.requests.request') as mr:
             mr.return_value = auth_response
             api = PicovicoAPI('app_id', 'device_id')
             assert not api.is_authorized()
             api.login('username', 'password')
             assert api.is_authorized()
-        with mock.patch('picovico.base.requests.request') as mr:
+        with mock.patch('picovico.baserequest.requests.request') as mr:
             mr.return_value = auth_response
             api = PicovicoAPI('app_id', 'device_id')
             assert not api.is_authorized()
diff --git a/tests/pv_base_test.py b/tests/pv_base_test.py
index 34c7962..9939c52 100644
--- a/tests/pv_base_test.py
+++ b/tests/pv_base_test.py
@@ -3,7 +3,7 @@ import mock
 import six
 from six.moves.urllib import parse
 
-from picovico import base as api
+from picovico import baserequest as api
 from picovico import urls
 from picovico import exceptions
 
@@ -28,7 +28,7 @@ class TestPicovicoRequest:
         assert args['url'] == parse.urljoin(urls.PICOVICO_BASE, urls.ME)
 
     def test_api_methods(self, success_response):
-        with mock.patch('picovico.base.requests.request') as mr:
+        with mock.patch('picovico.baserequest.requests.request') as mr:
             mr.return_value = success_response
             pv_api = api.PicovicoRequest()
             assert pv_api.get(urls.ME) == success_response.json()
@@ -37,7 +37,7 @@ class TestPicovicoRequest:
             with pytest.raises(AssertionError) as excinfo:
                 pv_api.post(urls.ME, data="hello")
             assert success_response.json() == pv_api.put(urls.ME)
-            with mock.patch('picovico.base.open', mock.mock_open(read_data='bibble')):
+            with mock.patch('picovico.baserequest.open', mock.mock_open(read_data='bibble')):
                 pv_api.put(urls.ME, filename="fo", data_headers={'MUSIC_NAME': "Hello"}, )
                 assert 'MUSIC_NAME' in pv_api.headers
                 assert pv_api.request_args['method'] == 'put'
diff --git a/tests/pv_component_test.py b/tests/pv_component_test.py
index def6fb6..2ea7dc2 100644
--- a/tests/pv_component_test.py
+++ b/tests/pv_component_test.py
@@ -53,7 +53,7 @@ class TestComponent:
     def test_library_and_free_component(self, success_response, method_calls, response_messages):
         req = pv_base.PicovicoRequest(response_messages.get('valid_auth_header'))
         style_component = PicovicoStyle(req)
-        with mock.patch('picovico.base.requests.request') as mr:
+        with mock.patch('picovico.baserequest.requests.request') as mr:
             mr.return_value = success_response
             get_call = method_calls.get('get').copy()
             get_call.update(url=parse.urljoin(pv_urls.PICOVICO_BASE, pv_urls.PICOVICO_STYLES))
diff --git a/tests/pv_specific_component_test.py b/tests/pv_specific_component_test.py
index 964fd42..eb60208 100644
--- a/tests/pv_specific_component_test.py
+++ b/tests/pv_specific_component_test.py
@@ -12,7 +12,7 @@ class TestPhotoComponent:
         req = PicovicoRequest(auth_header)
         ph_comp = PicovicoPhoto(req)
         assert ph_comp.component == 'photo'
-        with mock.patch('picovico.base.requests.request') as mr:
+        with mock.patch('picovico.baserequest.requests.request') as mr:
             mr.return_value = success_response
             args = ("something", "something_thumb")
             ph_comp.upload_photo_url(*args)
@@ -20,4 +20,4 @@ class TestPhotoComponent:
             post_request.update(data=dict(zip(('url', 'thumbnail_url'), args)))
             post_request.update(headers=auth_header)
             mr.assert_called_with(**post_request)
-        
+

pip install -e .[dev]
parse_log_pytest
pytest mock
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi==2025.1.31
charset-normalizer==3.4.1
exceptiongroup==1.2.2
idna==3.10
iniconfig==2.1.0
mock==5.2.0
packaging==24.2
-e git+https://github.com/picovico/python-sdk.git@5bbb1e00f64eeeb87bc682afe2b535394b1dd682#egg=picovico
pluggy==1.5.0
pytest==8.3.5
requests==2.32.3
six==1.17.0
tomli==2.2.1
urllib3==2.3.0

name: python-sdk
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - exceptiongroup==1.2.2
      - idna==3.10
      - iniconfig==2.1.0
      - mock==5.2.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - requests==2.32.3
      - six==1.17.0
      - tomli==2.2.1
      - urllib3==2.3.0
prefix: /opt/conda/envs/python-sdk

tests/pv_api_test.py::TestPicovicoAPI::test_auth_decoration tests/pv_api_test.py::TestPicovicoAPI::test_api_proxy tests/pv_api_test.py::TestPicovicoAPI::test_login_authenticate tests/pv_base_test.py::TestPicovicoRequest::test_properties tests/pv_base_test.py::TestPicovicoRequest::test_request_args tests/pv_base_test.py::TestPicovicoRequest::test_api_methods tests/pv_base_test.py::TestPicovicoRequest::test_authentication_header tests/pv_component_test.py::TestComponentMixin::test_component_property tests/pv_component_test.py::TestComponent::test_component_methods tests/pv_component_test.py::TestComponent::test_photo_component tests/pv_component_test.py::TestComponent::test_style_component tests/pv_component_test.py::TestComponent::test_library_and_free_component tests/pv_specific_component_test.py::TestPhotoComponent::test_upload_url
.gitignore picovico/__init__.py
.gitignore picovico/__init__.py