diff --git a/quickstats/components/asymptotic_cls.py b/quickstats/components/asymptotic_cls.py
index d3ae8ddaa93328e7d55a72da2ad5c35a2d706a54..b508b18a64c4f95a7a42c70d814245e04baa117d 100644
--- a/quickstats/components/asymptotic_cls.py
+++ b/quickstats/components/asymptotic_cls.py
@@ -566,4 +566,43 @@ class AsymptoticCLs(AnalysisObject):
         self.print_summary()
         
         self.stdout.info(f'INFO: Finished with {self.minimizer_calls} calls to minimize(nll)')
-        return limits
\ No newline at end of file
+        return limits
+
+    def evaluate_cls(self, poi:float):
+        # TODO: maybe load nominal snapshot first
+        self.reset()
+        self.save_snapshot(self.nom_glob_name, variables="globs")
+        self.save_snapshot(self.nom_nuis_name, variables="nuis")
+        
+        asimov_data_0 = self.model.generate_asimov(self.poi.GetName(), poi_val=0,
+                                                   poi_profile=0, 
+                                                   do_fit=not self.do_blind,
+                                                   modify_globs=not self.do_blind,
+                                                   dataset=self.data,
+                                                   restore_states=1)
+        asimov_0_nll = self.create_nll(asimov_data_0)
+        self.set_poi_value(0)
+        self.save_nll_snapshot(asimov_0_nll, 0)
+        self.load_conditional_snapshot(0, target="globs")
+        self.load_conditional_snapshot(0, target="nuis")
+        nll_value = asimov_0_nll.getVal()
+        self.fill_mappings(asimov_0_nll, asimov_data_0, 0, nll_value)
+        
+        nll_name = asimov_0_nll.GetName()
+        self.stdout.info("----------------------------------")
+        self.stdout.info(f"Getting CLs for nll: {nll_name}")
+        
+        qmu = self.get_qmu(asimov_0_nll, poi)
+        sigma= self.LimitTool.getSigma(poi, 0, qmu)
+        pmu = self.LimitTool.calcPmu(qmu, sigma, poi)
+        pb = self.LimitTool.calcPb(qmu, sigma, poi)
+        CLs = self.LimitTool.calcCLs(qmu, sigma, poi)
+        qmu95 = self.LimitTool.getQmu95(sigma, poi)
+        self.stdout.info(f"POI:            {poi}")
+        self.stdout.info(f"Sigma:          {sigma}")
+        self.stdout.info(f"NLL(muhat):     {nll_value}")
+        self.stdout.info(f"qmu95:          {qmu95}")
+        self.stdout.info(f"qmu:            {qmu}")
+        self.stdout.info(f"pmu:            {pmu}")
+        self.stdout.info(f"1-pb:           {pb}")
+        self.stdout.info(f"CLs:            {CLs}")