diff --git a/include/inc-deep/deep.hpp b/include/inc-deep/deep.hpp
index 049ee4564129340a6d55d30525e770994b93537a..e1865ded84d8b68dc6b6bbd4815434425b88f0de 100644
--- a/include/inc-deep/deep.hpp
+++ b/include/inc-deep/deep.hpp
@@ -50,8 +50,8 @@ namespace IRDB_SDK
 			virtual unique_ptr<StaticGlobalStartMap_t > getStaticGlobalRanges() const = 0;
 			virtual unique_ptr<RangeSentinelSet_t     > getRangeSentinels()     const = 0;
 
-			virtual unique_ptr<LoopNest_t> getLoopNest(const Function_t* f)           const = 0;
-			virtual unique_ptr<LoopNest_t> getLoopNest(const ControlFlowGraph_t* cfg) const = 0;
+			virtual unique_ptr<LoopNest_t> getLoops(Function_t* f)           const = 0;
+			virtual unique_ptr<LoopNest_t> getLoops(ControlFlowGraph_t* cfg) const = 0;
 
 		// factories
 			static unique_ptr<DeepAnalysis_t> factory(FileIR_t* firp, const AnalysisEngine_t& ae=aeSTARS, const vector<string>& options={});
diff --git a/include/inc-deep/loops.hpp b/include/inc-deep/loops.hpp
index 32193af8bd8fa422ac67ada864101c43b25adaf3..4ced624532d7bc77a4d6eb86744db16fc1757a59 100644
--- a/include/inc-deep/loops.hpp
+++ b/include/inc-deep/loops.hpp
@@ -25,7 +25,7 @@ namespace IRDB_SDK
 
 	class Loop_t; // forward decl
 	
-	using LoopSet_t = set<Loop_t>;
+	using LoopSet_t = set<Loop_t*>;
 
 	class Loop_t
 	{
@@ -34,7 +34,10 @@ namespace IRDB_SDK
 			Loop_t(const Loop_t& copy) = delete;
 
 		public:
-			virtual ~Loop_t(); 
+			virtual ~Loop_t() {} 
+
+			virtual BasicBlock_t*   getPreheader()   const = 0;
+			virtual BasicBlock_t*   getHeader()      const = 0;
 			virtual BasicBlockSet_t getAllBlocks()   const = 0;
 			virtual BasicBlockSet_t getOuterBlocks() const = 0;
 			virtual LoopSet_t       getInnerLoops()  const = 0;