Index: trunk/BNC/src/bnccore.cpp
===================================================================
--- trunk/BNC/src/bnccore.cpp	(revision 10039)
+++ trunk/BNC/src/bnccore.cpp	(revision 10040)
@@ -73,5 +73,4 @@
   _rawFile     = 0;
   _caster      = 0;
-  _bncComb     = 0;
 
   // Eph file(s)
@@ -143,8 +142,6 @@
   }
 
-  if (_bncComb) {
-    delete _bncComb;
-    _bncComb = 0;
-  }
+  bncComb::destruct();
+
   delete _pppMain;
 }
@@ -758,9 +755,8 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void t_bncCore::initCombination() {//cout << "initCombination" << endl;
-  _bncComb = new bncComb();
-  if (_bncComb->nStreams() < 1) {
-    delete _bncComb;
-    _bncComb = 0;
+void t_bncCore::initCombination() {
+  bncComb::getInstance();
+  if (BNC_CMB->nStreams() < 1) {
+    bncComb::destruct();
   }
 }
@@ -769,6 +765,5 @@
 ////////////////////////////////////////////////////////////////////////////
 void t_bncCore::stopCombination() {
-  delete _bncComb;
-  _bncComb = 0;
+  bncComb::destruct();
 }
 
Index: trunk/BNC/src/bnccore.h
===================================================================
--- trunk/BNC/src/bnccore.h	(revision 10039)
+++ trunk/BNC/src/bnccore.h	(revision 10040)
@@ -150,5 +150,4 @@
   QDate                  _fileDate;
   bncRawFile*            _rawFile;
-  bncComb*               _bncComb;
   e_mode                 _mode;
   QWidget*               _mainWindow;
Index: trunk/BNC/src/combination/bnccomb.cpp
===================================================================
--- trunk/BNC/src/combination/bnccomb.cpp	(revision 10039)
+++ trunk/BNC/src/combination/bnccomb.cpp	(revision 10040)
@@ -114,15 +114,12 @@
 }
 
-
-// Singleton
-////////////////////////////////////////////////////////////////////////////
-bncComb* bncComb::instance() {//cout << "bncComb::instance()" << endl;
-  static bncComb _bncComb;
-  return &_bncComb;
-}
+// Singleton: definition class variable
+////////////////////////////////////////////////////////////////////////////
+bncComb* bncComb::instance = nullptr; 
+
 
 // Constructor
 ////////////////////////////////////////////////////////////////////////////
-bncComb::bncComb() : _ephUser(true) {//cout << "bncComb::bncComb()" << endl;
+bncComb::bncComb() : _ephUser(true) {
 
   bncSettings settings;
Index: trunk/BNC/src/combination/bnccomb.h
===================================================================
--- trunk/BNC/src/combination/bnccomb.h	(revision 10039)
+++ trunk/BNC/src/combination/bnccomb.h	(revision 10040)
@@ -22,7 +22,16 @@
  Q_OBJECT
  public:
-  bncComb();
-  virtual ~bncComb();
-  static bncComb* instance();
+  static bncComb* getInstance() {
+    if (instance == 0) {
+      instance = new bncComb;
+    }
+    return instance;
+  }
+  bncComb(const bncComb&) = delete;
+  bncComb& operator=(const bncComb&) = delete;
+  static void destruct() {
+    delete instance;
+    instance = nullptr;
+  }
   int  nStreams() const {return _ACs.size();}
 
@@ -33,5 +42,4 @@
   void slotNewCodeBiases(QList<t_satCodeBias> satCodeBiases);
 
-
  private slots:
   void slotReadBiasSnxFile();
@@ -44,8 +52,7 @@
 
  private:
-  //bncComb();                  // private constructor
-  bncComb(const bncComb&);
-  bncComb& operator=(const bncComb&);
-
+  bncComb();                // no public constructor
+  ~bncComb();               // no public destructor
+  static bncComb* instance; // declaration class variable
   enum e_method{singleEpoch, filter};
 
@@ -267,5 +274,5 @@
 };
 
-#define BNC_CMB (bncComb::instance())
+#define BNC_CMB (bncComb::getInstance())
 
 #endif
