diff --git a/actions/ost-compare-structures b/actions/ost-compare-structures
index 0014f7dd3802ba1f97dee4d26142e02bc64e2cec..629a1de7d61b5a434963b4c375e9fdb1af3a6fa5 100644
--- a/actions/ost-compare-structures
+++ b/actions/ost-compare-structures
@@ -487,11 +487,15 @@ def _Main():
     PushVerbosityLevel(opts.verbosity)
     #
     # Read the input files
-    ost.LogInfo("Reading model from %s" % opts.model)
+    ost.LogInfo("#" * 80)
+    ost.LogInfo("Reading input files")
+    ost.LogInfo(" --> reading model from %s" % opts.model)
     models = _ReadStructureFile(opts.model)
-    ost.LogInfo("Reading reference from %s" % opts.reference)
+    ost.LogInfo(" --> reading reference from %s" % opts.reference)
     references = _ReadStructureFile(opts.reference)
     if opts.molck:
+        ost.LogInfo("#" * 80)
+        ost.LogInfo("Cleaning up input with Molck")
         for i in range(len(references)):
             _MolckEntity(references[i], opts)
             references[i] = references[i].CreateFullView()
@@ -504,28 +508,32 @@ def _Main():
         for i in range(len(models)):
             models[i] = models[i].CreateFullView()
     if opts.structural_checks:
+        ost.LogInfo("#" * 80)
+        ost.LogInfo("Performing structural checks")
         stereochemical_parameters = ReadStereoChemicalPropsFile(
             opts.parameter_file)
-        ost.LogInfo("Performing structural checks for reference(s)")
+        ost.LogInfo(" --> for reference(s)")
         for reference in references:
+            ost.LogInfo("Checking %s" % reference.GetName())
             CheckStructure(reference,
                            stereochemical_parameters.bond_table,
                            stereochemical_parameters.angle_table,
                            stereochemical_parameters.nonbonded_table,
                            opts.bond_tolerance,
                            opts.angle_tolerance)
-        ost.LogInfo("Performing structural checks for model(s)")
+        ost.LogInfo(" --> for model(s)")
         for model in models:
+            ost.LogInfo("Checking %s" % model.GetName())
             CheckStructure(model,
                            stereochemical_parameters.bond_table,
                            stereochemical_parameters.angle_table,
                            stereochemical_parameters.nonbonded_table,
                            opts.bond_tolerance,
                            opts.angle_tolerance)
-
     if len(models) > 1 or len(references) > 1:
+        ost.LogInfo("#" * 80)
         ost.LogInfo(
-            "Multiple complexes detected. All combinations will be tried.")
+            "Multiple complexes mode ON. All combinations will be tried.")
 
     result = {
         "result": {},
@@ -533,13 +541,15 @@ def _Main():
     result["options"]["cwd"] = os.path.abspath(os.getcwd())
     #
     # Perform scoring
+    ost.LogInfo("Performing scoring")
     for model in models:
         model_name = model.GetName()
         model_results = dict()
         for reference in references:
             reference_name = reference.GetName()
             reference_results = dict()
-            ost.LogInfo("#\nComparing %s to %s" % (
+            ost.LogInfo("#" * 80)
+            ost.LogInfo("Comparing %s to %s" % (
                 model_name,
                 reference_name))
             qs_scorer = qsscoring.QSscorer(reference,
@@ -551,7 +561,7 @@ def _Main():
                         opts.chain_mapping))
                 qs_scorer.chain_mapping = opts.chain_mapping
             if opts.qs_score:
-                ost.LogInfo("Computing QS-score")
+                ost.LogInfo("-> Computing QS-score")
                 try:
                     reference_results["qs_score"] = {
                         "status": "SUCCESS",
@@ -576,7 +586,6 @@ def _Main():
                     }
             # Calculate lDDT
             if opts.lddt:
-                ost.LogInfo("Computing lDDT")
                 lddt_results = {
                     "single_chain_lddt": list()
                 }
@@ -604,14 +613,26 @@ def _Main():
                         model_chain = lddt_scorer.model.chains[0].GetName()
                         reference_chain = \
                             lddt_scorer.references[0].chains[0].GetName()
+                        ost.LogInfo((" --> Computing lDDT between model "
+                                     "chain %s and reference chain %s") % (
+                                         model_chain,
+                                         reference_chain))
                         lddt_results["single_chain_lddt"].append({
                             "status": "SUCCESS",
                             "error": "",
                             "model_chain": model_chain,
                             "reference_chain": reference_chain,
                             "global_score": lddt_scorer.global_score,
-                            "conserved_contacts": lddt_scorer.conserved_contacts,
+                            "conserved_contacts":
+                                lddt_scorer.conserved_contacts,
                             "total_contacts": lddt_scorer.total_contacts})
+                        ost.LogInfo("Global LDDT score: %.4f" %
+                                    lddt_scorer.global_score)
+                        ost.LogInfo(
+                            "(%i conserved distances out of %i checked, over "
+                            "%i thresholds)" % (lddt_scorer.conserved_contacts,
+                                                lddt_scorer.total_contacts,
+                                                len(lddt_settings.cutoffs)))
                     except Exception as ex:
                         ost.LogError('Single chain lDDT failed:', str(ex))
                         lddt_results["single_chain_lddt"].append({
@@ -624,10 +645,14 @@ def _Main():
                             "total_contacts": 0.0})
                 # perform oligo lddt scoring
                 try:
+                    ost.LogInfo(' --> Computing oligomeric lDDT score')
                     lddt_results["oligo_lddt"] = {
                         "status": "SUCCESS",
                         "error": "",
                         "global_score": oligo_lddt_scorer.oligo_lddt}
+                    ost.LogInfo(
+                        "Oligo lDDT score: %.4f" %
+                        oligo_lddt_scorer.oligo_lddt)
                 except Exception as ex:
                     ost.LogError('Oligo lDDT failed:', str(ex))
                     lddt_results["oligo_lddt"] = {
@@ -635,11 +660,16 @@ def _Main():
                         "error": str(ex),
                         "global_score": 0.0}
                 try:
+                    ost.LogInfo(' --> Computing weighted lDDT score')
                     lddt_results["weighted_lddt"] = {
                         "status": "SUCCESS",
                         "error": "",
                         "global_score": oligo_lddt_scorer.weighted_lddt}
+                    ost.LogInfo(
+                        "Weighted lDDT score: %.4f" %
+                        oligo_lddt_scorer.weighted_lddt)
                 except Exception as ex:
+                    ost.LogError('Weighted lDDT failed:', str(ex))
                     lddt_results["weighted_lddt"] = {
                         "status": "FAILURE",
                         "error": str(ex),
diff --git a/modules/mol/alg/pymod/qsscoring.py b/modules/mol/alg/pymod/qsscoring.py
index 9c1da337832d290bb497001e4d5dd921d55cada2..16e4357c8cf4d9e03ba9be3253fe8ad04fc8c37d 100644
--- a/modules/mol/alg/pymod/qsscoring.py
+++ b/modules/mol/alg/pymod/qsscoring.py
@@ -16,7 +16,7 @@ Scoring of quaternary structures as in Martino's 2017 paper.
 Authors: Gerardo Tauriello, Martino Bertoni
 """
 
-from ost import mol, geom, conop, seq, settings
+from ost import mol, geom, conop, seq, settings, PushVerbosityLevel
 from ost import LogError, LogWarning, LogScript, LogInfo, LogVerbose, LogDebug
 from ost.bindings.clustalw import ClustalW
 from ost.mol.alg import lDDTScorer
@@ -870,7 +870,6 @@ class OligoLDDTScorer(object):
   def oligo_lddt(self):
     """Fills cached lddt_score, lddt_mdl and lddt_ref."""
     if self._oligo_lddt is None:
-      LogInfo('Computing oligomeric lDDT score')
       LogInfo('Reference %s has: %s chains' % (self.ref.GetName(), self.ref.chain_count))
       LogInfo('Model %s has: %s chains' % (self.mdl.GetName(), self.mdl.chain_count))
 
@@ -893,12 +892,8 @@ class OligoLDDTScorer(object):
       self._sc_lddt_scorers = list()
       for aln in self.alignments:
         # Get chains and renumber according to alignment (for lDDT)
-        ch_ref = aln.GetSequence(0).GetName()
         reference = Renumber(aln.GetSequence(0)).CreateFullView()
-        ch_mdl = aln.GetSequence(1).GetName()
         model = Renumber(aln.GetSequence(1)).CreateFullView()
-        LogInfo(("Computing lDDT between model chain %s and "
-                 "reference chain %s") % (ch_mdl, ch_ref))
         lddt_scorer = lDDTScorer(
           references=[reference],
           model=model,
diff --git a/modules/mol/alg/src/lddt.cc b/modules/mol/alg/src/lddt.cc
index 29d1aabfb395304464c8013a2207c590dd7902aa..19c24c01882d5bcb9fc3fcea09d779fbd81a16c1 100644
--- a/modules/mol/alg/src/lddt.cc
+++ b/modules/mol/alg/src/lddt.cc
@@ -291,6 +291,11 @@ int main (int argc, char **argv)
     }
   }
   CleanlDDTReferences(ref_list);
+  if (ref_list.size()==1) {
+    std::cout << "Multi-reference mode: Off" << std::endl;
+  } else {
+    std::cout << "Multi-reference mode: On" << std::endl;
+  }
   glob_dist_list = PreparelDDTGlobalRDMap(ref_list,
                                           settings.cutoffs,
                                           settings.sequence_separation,
diff --git a/modules/mol/alg/src/local_dist_diff_test.cc b/modules/mol/alg/src/local_dist_diff_test.cc
index 321f27e28a60a485c407021df3274d8db4ecd319..949e2fb5af8211cd43a8e7482ea3c984c9af8a8d 100644
--- a/modules/mol/alg/src/local_dist_diff_test.cc
+++ b/modules/mol/alg/src/local_dist_diff_test.cc
@@ -655,13 +655,14 @@ void lDDTScorer::_CheckConsistency(){
 void lDDTScorer::_ComputelDDT(){
   std::pair<int,int> cov = ComputeCoverage(model_view,glob_dist_list);
   if (cov.second == -1) {
-    std::cout << "Coverage: 0 (0 out of 0 residues)" << std::endl;
+    LOG_INFO("Coverage: 0 (0 out of 0 residues)");
   } else {
-    std::cout << "Coverage: " << (float(cov.first)/float(cov.second)) << " (" << cov.first << " out of " << cov.second << " residues)" << std::endl;
+    std::stringstream sout;
+    sout << "Coverage: " << (float(cov.first)/float(cov.second)) << " (" << cov.first << " out of " << cov.second << " residues)";
+    LOG_INFO(sout.str());
   }
 
   if (cov.first == 0) {
-    std::cout << "Global LDDT score: 0.0" << std::endl;
     _num_tot_con = 0;
     _num_cons_con = 0;
     _global_score = 0.0;
@@ -671,9 +672,6 @@ void lDDTScorer::_ComputelDDT(){
 
   std::pair<int,int> total_ov=alg::LocalDistDiffTest(model_view, glob_dist_list, settings.cutoffs, settings.sequence_separation, settings.label);
   Real lddt = static_cast<Real>(total_ov.first)/(static_cast<Real>(total_ov.second) ? static_cast<Real>(total_ov.second) : 1);
-  std::cout << "Global LDDT score: " << std::setprecision(4) << lddt << std::endl;
-  std::cout << "(" << std::fixed << total_ov.first << " conserved distances out of " << total_ov.second
-            << " checked, over " << settings.cutoffs.size() << " thresholds)" << std::endl;
   _num_tot_con = total_ov.second ? total_ov.second : 1;
   _num_cons_con = total_ov.first;
   _global_score = lddt;
@@ -943,10 +941,8 @@ GlobalRDMap PreparelDDTGlobalRDMap(const std::vector<EntityView>& ref_list,
                                    Real max_dist){
   GlobalRDMap glob_dist_list;
   if (ref_list.size()==1) {
-    std::cout << "Multi-reference mode: Off" << std::endl;
     glob_dist_list = CreateDistanceList(ref_list[0], max_dist);
   } else {
-    std::cout << "Multi-reference mode: On" << std::endl;
     glob_dist_list = CreateDistanceListFromMultipleReferences(ref_list,
                                                               cutoff_list,
                                                               sequence_separation,