diff --git a/generators/CMakeLists.txt b/generators/CMakeLists.txt
index 55ede5695c87b9af97ea487cc94042d017206c18..e302b23d6db3b4e93df941c8c4676eeee7c5b249 100644
--- a/generators/CMakeLists.txt
+++ b/generators/CMakeLists.txt
@@ -59,6 +59,7 @@ MpdGetNumEvents.cxx
 MpdHistoGenerator.cxx
 Mpd3fdGenerator.cxx
 MpdVHLLEGenerator.cxx
+MpdFreezoutGenerator.cxx
 )
 
 Set(HEADERS )
diff --git a/generators/GenLinkDef.h b/generators/GenLinkDef.h
index 98aba8ccc1655f7d9641fd7aebb5c31f3fde2bd5..71bf59c00fc963137cee80bf37001b7a22a14a52 100644
--- a/generators/GenLinkDef.h
+++ b/generators/GenLinkDef.h
@@ -34,6 +34,7 @@
 #pragma link C++ class MpdLibZ+;
 #pragma link C++ class MpdGetNumEvents+;
 #pragma link C++ class MpdHistoGenerator+;
+#pragma link C++ class MpdFreezoutGenerator+;
 
 #pragma link C++ class map<TString, FairIon*>;
 
diff --git a/generators/MpdFreezoutGenerator.cxx b/generators/MpdFreezoutGenerator.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..26f7387bbdc20b72eb596bbbf7c7d2cef441c117
--- /dev/null
+++ b/generators/MpdFreezoutGenerator.cxx
@@ -0,0 +1,39 @@
+/*
+ * MpdFreezoutGenerator.cxx
+ *
+ *  Created on: 30 gru 2016
+ *      Author: Daniel Wielanek
+ *		E-mail: daniel.wielanek@gmail.com
+ *		Warsaw University of Technology, Faculty of Physics
+ */
+#include "MpdFreezoutGenerator.h"
+#include "FairRunSim.h"
+MpdFreezoutGenerator *MpdFreezoutGenerator::fgInstance = NULL;
+MpdFreezoutGenerator::MpdFreezoutGenerator() {
+	if(fgInstance){
+		return;
+	}else{
+		FairRunSim *sim = FairRunSim::Instance();
+		fFreez = new TClonesArray("TLorentzVector",1000);
+		fgInstance = this;
+		sim->AddTask(this);
+	}
+}
+
+MpdFreezoutGenerator* MpdFreezoutGenerator::Instance() {
+	if(fgInstance==NULL){
+		fgInstance = new MpdFreezoutGenerator();
+	}
+	return fgInstance;
+}
+
+InitStatus MpdFreezoutGenerator::Init() {
+	FairRootManager *mngr = FairRootManager::Instance();
+	mngr->Register("Freezouts.","Freezouts",fFreez,kTRUE);
+	return kSUCCESS;
+}
+
+MpdFreezoutGenerator::~MpdFreezoutGenerator() {
+	delete fFreez;
+}
+
diff --git a/generators/MpdFreezoutGenerator.h b/generators/MpdFreezoutGenerator.h
new file mode 100644
index 0000000000000000000000000000000000000000..d95f0978cd1bf0d951e4b0f68663d268ea9ce94a
--- /dev/null
+++ b/generators/MpdFreezoutGenerator.h
@@ -0,0 +1,34 @@
+/*
+ * MpdFreezoutGenerator.h
+ *
+ *  Created on: 30 gru 2016
+ *      Author: Daniel Wielanek
+ *		E-mail: daniel.wielanek@gmail.com
+ *		Warsaw University of Technology, Faculty of Physics
+ */
+#ifndef SRC_MPDROOT_GENERATORS_MPDFREEZOUTGENERATOR_H_
+#define SRC_MPDROOT_GENERATORS_MPDFREEZOUTGENERATOR_H_
+#include "FairTask.h"
+#include <TClonesArray.h>
+#include <TLorentzVector.h>
+
+/**
+ * class for registering freezout coordinates in MpdROOT, for unknown reason standard registering doesn't work with Geant4
+ */
+class MpdFreezoutGenerator : public FairTask{
+	static MpdFreezoutGenerator *fgInstance;
+	TClonesArray *fFreez;
+public:
+	MpdFreezoutGenerator();
+	static MpdFreezoutGenerator *Instance();
+	InitStatus Init();
+	/**
+	 *
+	 * @return pointer to array
+	 */
+	TClonesArray *GetArray()const{ return fFreez;};
+	virtual ~MpdFreezoutGenerator();
+	ClassDef(MpdFreezoutGenerator,1)
+};
+
+#endif /* SRC_MPDROOT_GENERATORS_MPDFREEZOUTGENERATOR_H_ */
diff --git a/generators/MpdVHLLEGenerator.cxx b/generators/MpdVHLLEGenerator.cxx
index 3913f5aae29d936adeb0f2ada3f9aa45b347d10b..f837f58decd3c5b294b14a2808103637fcb8043e 100644
--- a/generators/MpdVHLLEGenerator.cxx
+++ b/generators/MpdVHLLEGenerator.cxx
@@ -3,13 +3,15 @@
 MpdVHLLEGenerator::MpdVHLLEGenerator()
 : FairGenerator(),
 fInputFile(NULL),
-fFileName("") {
+fFileName("") ,
+fFreezout(NULL){
 }
 
 MpdVHLLEGenerator::MpdVHLLEGenerator(TString fileName, Bool_t isCascade)
 : FairGenerator(),
 fInputFile(NULL),
-fFileName(fileName) {
+fFileName(fileName),
+fFreezout(NULL){
     //  fFileName = fileName;
     cout << "-I MpdVHLLEGenerator: Opening input file " << fFileName << endl;
     fInputFile = new TFile(fFileName.Data());
@@ -31,10 +33,13 @@ fFileName(fileName) {
     fDstTree->SetBranchAddress("y", fY);
     fDstTree->SetBranchAddress("z", fZ);
     fDstTree->SetBranchAddress("E", fE);
+    fDstTree->SetBranchAddress("t", fT);
     fDstTree->SetBranchAddress("npart", &fNpart);
     fDstTree->SetBranchAddress("id", fPID);
 
     fEventNumber = 0;
+    MpdFreezoutGenerator *freezgen = MpdFreezoutGenerator::Instance();
+    fFreezout = freezgen->GetArray();
 }
 
 MpdVHLLEGenerator::~MpdVHLLEGenerator() {
@@ -66,9 +71,11 @@ Bool_t MpdVHLLEGenerator::ReadEvent(FairPrimaryGenerator* primGen) {
         // event->SetB(b);
         event->MarkSet(kTRUE);
     }
-
+    fFreezout->Clear();
     for (Int_t iTrack = 0; iTrack < fNpart; iTrack++) {
         primGen->AddTrack(fPID[iTrack], fPx[iTrack], fPy[iTrack], fPz[iTrack], fX[iTrack], fY[iTrack], fZ[iTrack]);
+        TLorentzVector *freezpos = (TLorentzVector*)fFreezout->ConstructedAt(iTrack);
+        freezpos->SetXYZT(fX[iTrack],fY[iTrack],fZ[iTrack],fT[iTrack]);
         // cout << iTrack << " " << fPID[iTrack] << " " <<
         // fPx[iTrack] << " " << fPy[iTrack] << " " << fPz[iTrack] << " " <<
         // fX[iTrack] << " " << fY[iTrack] << " " << fZ[iTrack] << endl;
diff --git a/generators/MpdVHLLEGenerator.h b/generators/MpdVHLLEGenerator.h
index 59eba3fb07ba0df262e8d6509901039d42d2225b..6a271926937808fec5c5eddac590e735dd7410dc 100644
--- a/generators/MpdVHLLEGenerator.h
+++ b/generators/MpdVHLLEGenerator.h
@@ -14,6 +14,7 @@
 #include "FairPrimaryGenerator.h"
 #include "TFile.h"
 #include "TChain.h"
+#include "MpdFreezoutGenerator.h"
 
 using namespace std;
 using namespace TMath;
@@ -48,9 +49,11 @@ private:
     Float_t fY[dim]; //!
     Float_t fZ[dim]; //!
     Float_t fE[dim]; //!
+    Float_t fT[dim]; //!
     Int_t fPID[dim]; //!
     Int_t fNpart; //!
     Int_t fEventNumber; //!
+    TClonesArray *fFreezout; //!
     TString fBranch; //! treefin corresponds to hydro + cascade, treeini -- to hydro calculations only
     
     void SetCascade(Bool_t flag) {