diff --git a/data-access/engine/src/common/include/fitsfiles.hpp b/data-access/engine/src/common/include/fitsfiles.hpp
index 717069dff6351dcf2ae38ec1cef2929e31895324..ff0fd91e3885930fc932178b881dc11c9f156fad 100644
--- a/data-access/engine/src/common/include/fitsfiles.hpp
+++ b/data-access/engine/src/common/include/fitsfiles.hpp
@@ -39,9 +39,12 @@ namespace fitsfiles
       key_values_by_type key_values;
    };
 
+   std::vector<Hdu> fname2hdrstr(std::string filename, const std::vector<std::string> extra_cards, unsigned int maxHduPos, unsigned int minHduPos = 1, const keys_by_type *keys = nullptr);
+
    std::vector<Hdu> fname2hdrstr(std::string filename, unsigned int maxHduPos, unsigned int minHduPos = 1, const keys_by_type *keys = nullptr);
 
 
+
    // for services
 
    std::string read_header(std::string pathname, unsigned int hdunum);
diff --git a/data-access/engine/src/common/src/fitsfiles.cpp b/data-access/engine/src/common/src/fitsfiles.cpp
index 27eeebbaa89080e4304afb925d9350dd128b9b63..798b5912375e957170579e242895c063f582bef9 100644
--- a/data-access/engine/src/common/src/fitsfiles.cpp
+++ b/data-access/engine/src/common/src/fitsfiles.cpp
@@ -362,8 +362,28 @@ string fitsfiles::append_card_if_not_in_header(string header, const vector<fits_
 
 // deprecated
 
+void append_cards(string& hdr, vector<string> cards)
+{
+   LOG_trace(__func__);
+
+   static const string end_card{"END                                                                             "};
+
+   size_t hdr_len = hdr.length();
+
+   if(hdr_len > 80)
+   {
+      if(end_card.compare(hdr.substr(hdr_len-80 ,80)) == 0) hdr.erase(hdr_len-80,80);
+
+      for(long unsigned int i=0; i<cards.size(); i++) hdr += cards[i];
+
+      hdr += end_card;
+   }
+}
+
+
 vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
-      string filename, unsigned int maxHduPos, unsigned int minHduPos,
+      string filename, const vector<string> extra_cards,
+		unsigned int maxHduPos, unsigned int minHduPos,
       const keys_by_type* keys)
 {
    LOG_trace(__func__);
@@ -384,6 +404,14 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
       const bool apply_fixes = true;
       string header_str{hdr.get_header(apply_fixes)};
 
+		// append extra cards
+		bool extra_cards_given = (extra_cards.size() > 0);
+		if(extra_cards_given)
+		{
+			// FIXME check for duplicates before appending
+			append_cards(header_str, extra_cards);
+		}
+
       key_values_by_type key_values;
 
       if(keys != nullptr)
@@ -397,3 +425,13 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
    return vec_hdrs;
 }
 
+vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
+      string filename, unsigned int maxHduPos, unsigned int minHduPos,
+      const keys_by_type* keys)
+{
+   LOG_trace(__func__);
+	const vector<string> extra_cards; //no cards
+
+	return fitsfiles::fname2hdrstr(filename, extra_cards, maxHduPos, minHduPos, keys);
+}
+