diff --git a/algo/base/Prelude.h b/algo/base/Prelude.h
index e8d614071183796143de962be9db7778c95955ca..31a5f5a5eaa992ca19241736331bba2e070ec619 100644
--- a/algo/base/Prelude.h
+++ b/algo/base/Prelude.h
@@ -5,7 +5,6 @@
 #define CBM_ALGO_BASE_PRELUDE_H
 
 #include <cstdint>
-#include <gsl/span>
 
 namespace cbm::algo
 {
@@ -28,14 +27,6 @@ namespace cbm::algo
   using real = f32;
 #endif
 
-#if !XPU_IS_CUDA && !XPU_IS_HIP  // FIXME why doesn't this work with CUDA?
-  template<typename T>
-  using span = gsl::span<T>;
-
-  template<typename T>
-  using cspan = gsl::span<const T>;
-#endif
-
 }  // namespace cbm::algo
 
 #endif  // CBM_ALGO_BASE_PRELUDE_H
diff --git a/algo/detectors/sts/StsHitfinderChain.cxx b/algo/detectors/sts/StsHitfinderChain.cxx
index 7cef8dd32dad70cde3667b4274787ee7a08f9431..f38562ed957729524b5c711df68e2cfe5bebf950 100644
--- a/algo/detectors/sts/StsHitfinderChain.cxx
+++ b/algo/detectors/sts/StsHitfinderChain.cxx
@@ -472,7 +472,7 @@ void sts::HitfinderChain::EnsureDigisSorted()
   }
 }
 
-void sts::HitfinderChain::EnsureChannelOffsets(span<u32> channelOffsetsByModule)
+void sts::HitfinderChain::EnsureChannelOffsets(gsl::span<u32> channelOffsetsByModule)
 {
   xpu::h_view digisPerModule {fHitfinder.digisPerModule};
   xpu::h_view digiOffsetPerModule {fHitfinder.digiOffsetPerModule};
@@ -483,8 +483,8 @@ void sts::HitfinderChain::EnsureChannelOffsets(span<u32> channelOffsetsByModule)
 
     int offset = digiOffsetPerModule[m];
     int nDigis = digiOffsetPerModule[m + 1] - offset;
-    span<CbmStsDigi> digis(&digisPerModule[offset], nDigis);
-    span<u32> channelOffsets = channelOffsetsByModule.subspan(m * nChannels, nChannels);
+    gsl::span<CbmStsDigi> digis(&digisPerModule[offset], nDigis);
+    gsl::span<u32> channelOffsets = channelOffsetsByModule.subspan(m * nChannels, nChannels);
 
     if (nDigis == 0) continue;
 
@@ -517,7 +517,7 @@ void sts::HitfinderChain::EnsureChannelOffsets(span<u32> channelOffsetsByModule)
   }
 }
 
-void sts::HitfinderChain::EnsureClustersSane(span<GpuClusterIdx> hClusterIdx, span<int> hNClusters)
+void sts::HitfinderChain::EnsureClustersSane(gsl::span<GpuClusterIdx> hClusterIdx, gsl::span<int> hNClusters)
 {
   for (size_t m = 0; m < 2 * fPars->modules.size(); m++) {
     int nClusters = hNClusters[m];
diff --git a/algo/detectors/sts/StsHitfinderChain.h b/algo/detectors/sts/StsHitfinderChain.h
index bb38e93f66288ad9d09eb68b7990b92db8df99a8..7676a05f1710b9efd573cb7572cc4551c54ff477 100644
--- a/algo/detectors/sts/StsHitfinderChain.h
+++ b/algo/detectors/sts/StsHitfinderChain.h
@@ -98,8 +98,8 @@ namespace cbm::algo::sts
     // Debug functions, ensure reco produces sane results
     void EnsureDigiOffsets(DigiMap&);
     void EnsureDigisSorted();
-    void EnsureChannelOffsets(span<u32>);
-    void EnsureClustersSane(span<GpuClusterIdx>, span<int>);
+    void EnsureChannelOffsets(gsl::span<u32>);
+    void EnsureClustersSane(gsl::span<GpuClusterIdx>, gsl::span<int>);
     void EnsureClustersSorted();
 
     std::optional<const sts::HitfinderPars> fPars;