diff --git a/Environment/NuclearComposition.h b/Environment/NuclearComposition.h
index 5f89bd2cadb50e48f01931abafbc4ee94305cf8b..dee18a4463c340698bbff372cc504d4744748375 100644
--- a/Environment/NuclearComposition.h
+++ b/Environment/NuclearComposition.h
@@ -35,15 +35,15 @@ namespace corsika::environment {
     public:
       using value_type = double;
       using iterator_category = std::input_iterator_tag;
-      using pointer = double*;
-      using reference = double&;
+      using pointer = value_type*;
+      using reference = value_type&;
       using difference_type = ptrdiff_t;
 
       WeightProviderIterator(AConstIterator a, BConstIterator b)
           : fAIter(a)
           , fBIter(b) {}
 
-      double operator*() const { return ((*fAIter) * (*fBIter)).magnitude(); }
+      value_type operator*() const { return ((*fAIter) * (*fBIter)).magnitude(); }
 
       WeightProviderIterator& operator++() { // prefix ++
         ++fAIter;