diff --git a/src/schnetpack/datasets/matproj.py b/src/schnetpack/datasets/matproj.py
index 03fb3ea..d81f8ac 100644
--- a/src/schnetpack/datasets/matproj.py
+++ b/src/schnetpack/datasets/matproj.py
@@ -6,7 +6,7 @@ from ase.db import connect
 from ase.units import eV
 
 from schnetpack.data import AtomsData
-from schnetpack.environment import ASEEnvironmentProvider
+from schnetpack.environment import AseEnvironmentProvider
 
 __all__ = [
     'MaterialsProject'
@@ -48,7 +48,7 @@ class MaterialsProject(AtomsData):
 
         self.dbpath = dbpath
 
-        environment_provider = ASEEnvironmentProvider(cutoff)
+        environment_provider = AseEnvironmentProvider(cutoff)
 
         if properties is None:
             properties = MaterialsProject.available_properties
diff --git a/src/schnetpack/datasets/omdb.py b/src/schnetpack/datasets/omdb.py
index 34a7d72..d954242 100644
--- a/src/schnetpack/datasets/omdb.py
+++ b/src/schnetpack/datasets/omdb.py
@@ -8,7 +8,7 @@ from ase.db import connect
 from ase.units import eV
 
 from schnetpack.data import AtomsData
-from schnetpack.environment import ASEEnvironmentProvider
+from schnetpack.environment import AseEnvironmentProvider
 
 __all__ = [
     'OrganicMaterialsDatabase'
@@ -57,7 +57,7 @@ class OrganicMaterialsDatabase(AtomsData):
             raise FileNotFoundError('Download OMDB dataset (e.g. OMDB-GAP1.tar.gz) from https://omdb.diracmaterials.org/dataset/ and set datapath to this file')
 
 
-        environment_provider = ASEEnvironmentProvider(cutoff)
+        environment_provider = AseEnvironmentProvider(cutoff)
 
         if download and not os.path.exists(self.dbpath):
             # Convert OMDB .tar.gz into a .db file
diff --git a/src/schnetpack/environment.py b/src/schnetpack/environment.py
index 673a4b8..2693d28 100644
--- a/src/schnetpack/environment.py
+++ b/src/schnetpack/environment.py
@@ -4,8 +4,10 @@ from ase.neighborlist import neighbor_list
 
 class BaseEnvironmentProvider:
     """
-    Environment Providers are supposed to collect neighboring atoms within local, atom-centered environments.
-    All environment providers should inherit from this class.
+    Environment Providers are supposed to collect neighboring atoms within
+    local, atom-centered environments. All environment providers should inherit
+    from this class.
+
     """
 
     def get_environment(self, idx, atoms):
@@ -17,9 +19,11 @@ class BaseEnvironmentProvider:
             atoms (ase.Atoms): atomistic system
 
         Returns:
-            neighborhood_idx (np.ndarray): indices of the neighbors with shape n_atoms x n_max_neighbors
-            offset (np.ndarray): offset in lattice coordinates for periodic systems (otherwise zero matrix) of
-            shape n_atoms x n_max_neighbors x 3
+            neighborhood_idx (np.ndarray): indices of the neighbors with shape
+                n_atoms x n_max_neighbors
+            offset (np.ndarray): offset in lattice coordinates for periodic
+                systems (otherwise zero matrix) of shape
+                n_atoms x n_max_neighbors x 3
 
         '''
 
@@ -28,8 +32,9 @@ class BaseEnvironmentProvider:
 
 class SimpleEnvironmentProvider(BaseEnvironmentProvider):
     '''
-    A simple environment provider for small molecules where all atoms are each other's neighbors.
-    It calculates full distance matrices and does not support cutoffs or periodic boundary conditions.
+    A simple environment provider for small molecules where all atoms are each
+    other's neighbors. It calculates full distance matrices and does not
+    support cutoffs or periodic boundary conditions.
     '''
 
     def get_environment(self, idx, atoms, grid=None):
@@ -39,23 +44,32 @@ class SimpleEnvironmentProvider(BaseEnvironmentProvider):
             neighborhood_idx = -np.ones((1, 1), dtype=np.float32)
             offsets = np.zeros((n_atoms, 1, 3), dtype=np.float32)
         else:
-            neighborhood_idx = np.tile(np.arange(n_atoms, dtype=np.float32)[np.newaxis], (n_atoms, 1))
-            neighborhood_idx = neighborhood_idx[~np.eye(n_atoms, dtype=np.bool)].reshape(n_atoms, n_atoms - 1)
+            neighborhood_idx = np.tile(
+                np.arange(n_atoms, dtype=np.float32)[np.newaxis], (n_atoms, 1))
+            neighborhood_idx = neighborhood_idx[
+                ~np.eye(n_atoms, dtype=np.bool)].reshape(n_atoms, n_atoms - 1)
 
             if grid is not None:
                 n_grid = grid.shape[0]
-                neighborhood_idx = np.hstack([neighborhood_idx, -np.ones((n_atoms, 1))])
-                grid_nbh = np.tile(np.arange(n_atoms, dtype=np.float32)[np.newaxis], (n_grid, 1))
+                neighborhood_idx = np.hstack(
+                    [neighborhood_idx, -np.ones((n_atoms, 1))])
+                grid_nbh = np.tile(
+                    np.arange(n_atoms, dtype=np.float32)[np.newaxis],
+                    (n_grid, 1))
                 neighborhood_idx = np.vstack([neighborhood_idx, grid_nbh])
 
-            offsets = np.zeros((neighborhood_idx.shape[0], neighborhood_idx.shape[1], 3), dtype=np.float32)
+            offsets = np.zeros(
+                (neighborhood_idx.shape[0], neighborhood_idx.shape[1], 3),
+                dtype=np.float32)
         return neighborhood_idx, offsets
 
 
-class ASEEnvironmentProvider:
-    '''
-    Environment provider making use of ASE neighbor lists. Supports cutoffs and PBCs.
-    '''
+class AseEnvironmentProvider(BaseEnvironmentProvider):
+    """
+    Environment provider making use of ASE neighbor lists. Supports cutoffs
+    and PBCs.
+
+    """
 
     def __init__(self, cutoff):
         self.cutoff = cutoff
@@ -65,20 +79,24 @@ class ASEEnvironmentProvider:
             raise NotImplementedError
 
         n_atoms = atoms.get_number_of_atoms()
-        idx_i, idx_j, idx_S = neighbor_list('ijS', atoms, self.cutoff, self_interaction=False)
+        idx_i, idx_j, idx_S = neighbor_list('ijS', atoms, self.cutoff,
+                                            self_interaction=False)
         if idx_i.shape[0] > 0:
             uidx, n_nbh = np.unique(idx_i, return_counts=True)
             n_max_nbh = np.max(n_nbh)
 
             n_nbh = np.tile(n_nbh[:, np.newaxis], (1, n_max_nbh))
-            nbh_range = np.tile(np.arange(n_max_nbh, dtype=np.int)[np.newaxis], (n_nbh.shape[0], 1))
+            nbh_range = np.tile(np.arange(n_max_nbh, dtype=np.int)[np.newaxis],
+                                (n_nbh.shape[0], 1))
 
             mask = np.zeros((n_atoms, np.max(n_max_nbh)), dtype=np.bool)
             mask[uidx, :] = nbh_range < n_nbh
-            neighborhood_idx = -np.ones((n_atoms, np.max(n_max_nbh)), dtype=np.float32)
+            neighborhood_idx = -np.ones((n_atoms, np.max(n_max_nbh)),
+                                        dtype=np.float32)
             neighborhood_idx[mask] = idx_j
 
-            offset = np.zeros((n_atoms, np.max(n_max_nbh), 3), dtype=np.float32)
+            offset = np.zeros((n_atoms, np.max(n_max_nbh), 3),
+                              dtype=np.float32)
             offset[mask] = idx_S
         else:
             neighborhood_idx = -np.ones((n_atoms, 1), dtype=np.float32)
@@ -89,7 +107,8 @@ class ASEEnvironmentProvider:
 
 def collect_atom_triples(nbh_idx):
     """
-    Collect all valid triples of atoms by rearranging neighbor indices obtained from an environment provider.
+    Collect all valid triples of atoms by rearranging neighbor indices obtained
+    from an environment provider.
 
     Args:
         nbh_idx (numpy.ndarray): neighbor indices

No inheritance of ASEEnvironmentProvider
https://github.com/atomistic-machine-learning/schnetpack/blob/9caa03c5ca27ab17f02201c4146487c8917521f3/src/schnetpack/environment.py#L55

There are no functional issues, but I think `ASEEnvironmentProvider` should inherit `BaseEnvironmentProvider` like below.

```python
class ASEEnvironmentProvider(BaseEnvironmentProvider):
```

And in my opinion, the name of the class should be changed to `AseEnvironmentProvider` because in the other module (e.g., `md`) the word `Ase` is used for ASE related classes (e.g., `md.AseInterface`).  The naming conventions should be used consistently.
diff --git a/tests/test_environment.py b/tests/test_environment.py
index 5199e1b..0d0fed9 100644
--- a/tests/test_environment.py
+++ b/tests/test_environment.py
@@ -39,7 +39,7 @@ def simple_env():
 
 @pytest.fixture
 def ase_env():
-    return env.ASEEnvironmentProvider(10.)
+    return env.AseEnvironmentProvider(10.)
 
 
 def test_single_atom(single_atom, simple_env, ase_env):

pip install -e .
parse_log_pytest
requirements.txt
pytest
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
ase==3.24.0
colorama==0.4.6
contourpy==1.3.0
cycler==0.12.1
docopt-ng==0.9.0
exceptiongroup==1.2.2
filelock==3.18.0
fonttools==4.56.0
fsspec==2025.3.1
gitdb==4.0.12
GitPython==3.1.44
h5py==3.13.0
importlib_resources==6.5.2
iniconfig==2.1.0
Jinja2==3.1.6
jsonpickle==4.0.5
kiwisolver==1.4.7
MarkupSafe==3.0.2
matplotlib==3.9.4
mpmath==1.3.0
munch==4.0.0
networkx==3.2.1
numpy==2.0.2
nvidia-cublas-cu12==12.4.5.8
nvidia-cuda-cupti-cu12==12.4.127
nvidia-cuda-nvrtc-cu12==12.4.127
nvidia-cuda-runtime-cu12==12.4.127
nvidia-cudnn-cu12==9.1.0.70
nvidia-cufft-cu12==11.2.1.3
nvidia-curand-cu12==10.3.5.147
nvidia-cusolver-cu12==11.6.1.9
nvidia-cusparse-cu12==12.3.1.170
nvidia-cusparselt-cu12==0.6.2
nvidia-nccl-cu12==2.21.5
nvidia-nvjitlink-cu12==12.4.127
nvidia-nvtx-cu12==12.4.127
packaging==24.2
pillow==11.1.0
pluggy==1.5.0
protobuf==6.30.2
py-cpuinfo==9.0.0
pyparsing==3.2.3
pytest==8.3.5
python-dateutil==2.9.0.post0
PyYAML==6.0.2
sacred==0.8.7
-e git+https://github.com/atomistic-machine-learning/schnetpack.git@a47c081a4bd846879e1ef6e059f5f0f7c5e49018#egg=schnetpack
scipy==1.13.1
six==1.17.0
smmap==5.0.2
sympy==1.13.1
tensorboardX==2.6.2.2
tomli==2.2.1
torch==2.6.0
triton==3.2.0
typing_extensions==4.13.0
wrapt==1.17.2
zipp==3.21.0

name: schnetpack
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:
      - ase==3.24.0
      - colorama==0.4.6
      - contourpy==1.3.0
      - cycler==0.12.1
      - docopt-ng==0.9.0
      - exceptiongroup==1.2.2
      - filelock==3.18.0
      - fonttools==4.56.0
      - fsspec==2025.3.1
      - gitdb==4.0.12
      - gitpython==3.1.44
      - h5py==3.13.0
      - importlib-resources==6.5.2
      - iniconfig==2.1.0
      - jinja2==3.1.6
      - jsonpickle==4.0.5
      - kiwisolver==1.4.7
      - markupsafe==3.0.2
      - matplotlib==3.9.4
      - mpmath==1.3.0
      - munch==4.0.0
      - networkx==3.2.1
      - numpy==2.0.2
      - nvidia-cublas-cu12==12.4.5.8
      - nvidia-cuda-cupti-cu12==12.4.127
      - nvidia-cuda-nvrtc-cu12==12.4.127
      - nvidia-cuda-runtime-cu12==12.4.127
      - nvidia-cudnn-cu12==9.1.0.70
      - nvidia-cufft-cu12==11.2.1.3
      - nvidia-curand-cu12==10.3.5.147
      - nvidia-cusolver-cu12==11.6.1.9
      - nvidia-cusparse-cu12==12.3.1.170
      - nvidia-cusparselt-cu12==0.6.2
      - nvidia-nccl-cu12==2.21.5
      - nvidia-nvjitlink-cu12==12.4.127
      - nvidia-nvtx-cu12==12.4.127
      - packaging==24.2
      - pillow==11.1.0
      - pluggy==1.5.0
      - protobuf==6.30.2
      - py-cpuinfo==9.0.0
      - pyparsing==3.2.3
      - pytest==8.3.5
      - python-dateutil==2.9.0.post0
      - pyyaml==6.0.2
      - sacred==0.8.7
      - scipy==1.13.1
      - six==1.17.0
      - smmap==5.0.2
      - sympy==1.13.1
      - tensorboardx==2.6.2.2
      - tomli==2.2.1
      - torch==2.6.0
      - triton==3.2.0
      - typing-extensions==4.13.0
      - wrapt==1.17.2
      - zipp==3.21.0
prefix: /opt/conda/envs/schnetpack

tests/test_environment.py::test_single_atom tests/test_environment.py::test_single_site_crystal_small_cutoff[0] tests/test_environment.py::test_single_site_crystal_large_cutoff[0]
tests/test_environment.py::test_two_atoms tests/test_environment.py::test_single_site_crystal_small_cutoff[1] tests/test_environment.py::test_single_site_crystal_large_cutoff[1]
src/schnetpack/datasets/omdb.py src/schnetpack/environment.py src/schnetpack/datasets/matproj.py
src/schnetpack/datasets/omdb.py src/schnetpack/environment.py src/schnetpack/datasets/matproj.py