diff --git a/DualDipoleAntenna.cc b/DualDipoleAntenna.cc
index dd165612d41950d56a76a7501d59a9af9cbfcf2e..89985fe35cecf2fc1fcca8de8f9ed3f27ba1936b 100644
--- a/DualDipoleAntenna.cc
+++ b/DualDipoleAntenna.cc
@@ -31,11 +31,6 @@ namespace LOFAR
 namespace StationResponse
 {
 
-DualDipoleAntenna::DualDipoleAntenna()
-{
-    m_element_response.reset(new HamakerElementResponseHBA());
-}
-
 matrix22c_t DualDipoleAntenna::response(real_t freq,
     const vector3r_t &direction) const
 {
@@ -51,5 +46,7 @@ matrix22c_t DualDipoleAntenna::response(real_t freq,
     return response;
 }
 
+std::unique_ptr<ElementResponse> DualDipoleAntenna::m_element_response = nullptr;
+
 } //# namespace StationResponse
 } //# namespace LOFAR
diff --git a/DualDipoleAntenna.h b/DualDipoleAntenna.h
index ae397025051b5cb9fe75c0a8be89de07c0ff64ac..a51b420dfb00324e9e6cb4a5cd6433ba520cfec2 100644
--- a/DualDipoleAntenna.h
+++ b/DualDipoleAntenna.h
@@ -47,15 +47,12 @@ public:
     typedef std::shared_ptr<DualDipoleAntenna>       Ptr;
     typedef std::shared_ptr<const DualDipoleAntenna> ConstPtr;
 
-    explicit DualDipoleAntenna();
-
     virtual ~DualDipoleAntenna() final override { };
 
     virtual matrix22c_t response(real_t freq, const vector3r_t &direction)
         const final override;
 
-private:
-    std::unique_ptr<ElementResponse> m_element_response;
+    static std::unique_ptr<ElementResponse> m_element_response;
 };
 
 // @}
diff --git a/Station.cc b/Station.cc
index 518ddf8f35d10880425b4b886aa58ca0211f1ccb..6c1e0639dc6d4af2c4dd6c613992e87c5ab371db 100644
--- a/Station.cc
+++ b/Station.cc
@@ -24,6 +24,8 @@
 #include "MathUtil.h"
 
 #include "HamakerElementResponse.h"
+#include "DualDipoleAntenna.h"
+#include "TileAntenna.h"
 
 namespace LOFAR
 {
@@ -35,6 +37,12 @@ Station::Station(const string &name, const vector3r_t &position)
         itsPosition(position),
         itsPhaseReference(position)
 {
+    if (DualDipoleAntenna::m_element_response == nullptr) {
+        DualDipoleAntenna::m_element_response.reset(new HamakerElementResponseLBA);
+    }
+    if (TileAntenna::m_element_response == nullptr) {
+        TileAntenna::m_element_response.reset(new HamakerElementResponseHBA);
+    }
 }
 
 const string &Station::name() const
diff --git a/TileAntenna.cc b/TileAntenna.cc
index 1a8944a1d2f67e7c07e9dcbc50df16d4d3a3fa44..339848120595eebb8184beb6d255fef1ac53494a 100644
--- a/TileAntenna.cc
+++ b/TileAntenna.cc
@@ -31,10 +31,7 @@ namespace StationResponse
 {
 
 TileAntenna::TileAntenna(const TileConfig &config)
-    :   itsConfig(config)
-{
-    m_element_response.reset(new HamakerElementResponseHBA());
-}
+    :   itsConfig(config) {}
 
 void TileAntenna::setConfig(const TileConfig &config)
 {
@@ -96,5 +93,7 @@ matrix22c_t TileAntenna::elementResponse(real_t freq,
     return response;
 }
 
+std::unique_ptr<ElementResponse> TileAntenna::m_element_response = nullptr;
+
 } //# namespace StationResponse
 } //# namespace LOFAR
diff --git a/TileAntenna.h b/TileAntenna.h
index 1521735f3584b73aedc7aa1d827ca487129aeaac..8e4eca54782ca0ed3467411aacfa083f19d0a69d 100644
--- a/TileAntenna.h
+++ b/TileAntenna.h
@@ -63,9 +63,10 @@ public:
     virtual matrix22c_t elementResponse(real_t freq,
         const vector3r_t &direction) const final override;
 
+    static std::unique_ptr<ElementResponse> m_element_response;
+
 private:
     TileConfig  itsConfig;
-    std::unique_ptr<ElementResponse> m_element_response;
 };
 
 // @}