diff --git a/base/DP3.cc b/base/DP3.cc
index 5e9550803fb0905ce8f5d0b7aec3331b08676eae..97a75c09e6085168bd16ce6c68638a029c298ffc 100644
--- a/base/DP3.cc
+++ b/base/DP3.cc
@@ -198,7 +198,7 @@ static std::shared_ptr<Step> makeSingleStep(const std::string& type,
   } else if (type == "h5parmpredict") {
     step = std::make_shared<steps::H5ParmPredict>(parset, prefix);
   } else if (type == "gaincal" || type == "calibrate") {
-    step = std::make_shared<steps::GainCal>(*inputStep, parset, prefix);
+    step = std::make_shared<steps::GainCal>(parset, prefix);
   } else if (type == "upsample") {
     step = std::make_shared<steps::Upsample>(parset, prefix);
   } else if (type == "split" || type == "explode") {
diff --git a/steps/GainCal.cc b/steps/GainCal.cc
index 8178669c1729d0b98e8b8b872e0f7a263948575d..2cf73a25829907d8513f421543e846af1d49922b 100644
--- a/steps/GainCal.cc
+++ b/steps/GainCal.cc
@@ -42,10 +42,8 @@ using schaapcommon::h5parm::SolTab;
 namespace dp3 {
 namespace steps {
 
-GainCal::GainCal(InputStep& input, const common::ParameterSet& parset,
-                 const string& prefix)
-    : itsInput(input),
-      itsName(prefix),
+GainCal::GainCal(const common::ParameterSet& parset, const std::string& prefix)
+    : itsName(prefix),
       itsUseModelColumn(parset.getBool(prefix + "usemodelcolumn", false)),
       itsModelColumnName(),
       itsParmDBName(parset.getString(prefix + "parmdb", "")),
@@ -149,8 +147,6 @@ GainCal::GainCal(InputStep& input, const common::ParameterSet& parset,
   itsNChan = parset.getInt(prefix + "nchan", defaultNChan);
 }
 
-GainCal::~GainCal() {}
-
 void GainCal::setAntennaUsed() {
   Matrix<bool> selbl(itsBaselineSelection.apply(info()));
   unsigned int nBl = info().getAnt1().size();
@@ -368,9 +364,6 @@ bool GainCal::process(const DPBuffer& bufin) {
     // We'll read the necessary info from the buffer and pass it on
     itsBuf[bufIndex].referenceFilled(bufin);
   }
-  itsInput.fetchUVW(bufin, itsBuf[bufIndex], itsTimer);
-  itsInput.fetchWeights(bufin, itsBuf[bufIndex], itsTimer);
-  itsInput.fetchFullResFlags(bufin, itsBuf[bufIndex], itsTimer);
 
   // UVW flagging happens on a copy of the buffer, so these flags are not
   // written
diff --git a/steps/GainCal.h b/steps/GainCal.h
index 2e98d49d98c1a2a7edf12934c110d2e3294bf9bc..e47788f457b8921b5a9d0d09744c478d5a7a077e 100644
--- a/steps/GainCal.h
+++ b/steps/GainCal.h
@@ -41,10 +41,7 @@ class GainCal final : public Step {
  public:
   /// Construct the object.
   /// Parameters are obtained from the parset using the given prefix.
-  GainCal(InputStep& input, const common::ParameterSet& parset,
-          const std::string& prefix);
-
-  virtual ~GainCal();
+  GainCal(const common::ParameterSet& parset, const std::string& prefix);
 
   common::Fields getRequiredFields() const override {
     return kDataField | kFlagsField | kWeightsField | kFullResFlagsField |
@@ -113,7 +110,6 @@ class GainCal final : public Step {
   /// (timeslotsperparmupdate) Variant for writing H5Parm
   void writeSolutionsH5Parm(double startTime);
 
-  InputStep& itsInput;
   std::string itsName;
   std::vector<base::DPBuffer> itsBuf;
   bool itsUseModelColumn;
diff --git a/steps/test/unit/tGainCal.cc b/steps/test/unit/tGainCal.cc
index e610a7aa5f462f0a962778d507d7895e39b2bec0..76ae4dfa72702a4263a8afd38862553589d6da58 100644
--- a/steps/test/unit/tGainCal.cc
+++ b/steps/test/unit/tGainCal.cc
@@ -6,39 +6,36 @@
 #include <boost/test/unit_test.hpp>
 
 #include "../../../common/ParameterSet.h"
-#include "mock/MockInput.h"
 
 using dp3::steps::GainCal;
 
 BOOST_AUTO_TEST_SUITE(gaincal)
 
 BOOST_AUTO_TEST_CASE(duplicate_modelcolumn) {
-  dp3::steps::MockInput input;
   dp3::common::ParameterSet parset;
   parset.add("gaincal.parmdb", "foo");
   parset.add("gaincal.caltype", "scalar");
   parset.add("gaincal.usemodelcolumn", "true");
   parset.add("gaincal.modelcolumn", "foo");
-  BOOST_CHECK_NO_THROW(std::make_unique<GainCal>(input, parset, "gaincal."));
+  BOOST_CHECK_NO_THROW(std::make_unique<GainCal>(parset, "gaincal."));
 
   // When the deprecated msin.modelcolumn key is also present, GainCal throws.
   parset.add("msin.modelcolumn", "bar");
-  BOOST_CHECK_THROW(std::make_unique<GainCal>(input, parset, "gaincal."),
+  BOOST_CHECK_THROW(std::make_unique<GainCal>(parset, "gaincal."),
                     std::runtime_error);
 }
 
 BOOST_AUTO_TEST_CASE(provided_fields) {
-  dp3::steps::MockInput input;
   dp3::common::ParameterSet parset;
   parset.add("parmdb", "foo");
   parset.add("caltype", "scalar");
   parset.add("usemodelcolumn", "true");
   parset.add("modelcolumn", "bar");
-  const GainCal gaincal(input, parset, "");
+  const GainCal gaincal(parset, "");
   BOOST_TEST(gaincal.getProvidedFields() == dp3::common::Fields());
 
   parset.add("applysolution", "true");
-  const GainCal applies_solution(input, parset, "");
+  const GainCal applies_solution(parset, "");
   BOOST_TEST(applies_solution.getProvidedFields() ==
              (GainCal::kDataField | GainCal::kFlagsField));
 }