diff --git a/include/inc-elfdep/elfdep.hpp b/include/inc-elfdep/elfdep.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..fc81f0d279ab7a89e233104bdce637c6206ccbe4
--- /dev/null
+++ b/include/inc-elfdep/elfdep.hpp
@@ -0,0 +1,35 @@
+
+#include <irdb-core>
+#include <irdb-transform>
+#include <string>
+#include <memory>
+
+
+namespace IRDB_SDK
+{
+
+using namespace std;
+
+class ElfDependencies_t 
+{
+	protected:
+		ElfDependencies_t() { } 
+		ElfDependencies_t(const ElfDependencies_t& copy) = delete;
+	public:
+		virtual ~ElfDependencies_t() { } 
+
+		virtual void prependLibraryDepedencies(const string& libName) = 0; 
+		virtual void appendLibraryDepedencies(const string& libName)  = 0; 
+
+		// return scoop and offset
+		virtual pair<IRDB_SDK::DataScoop_t*,int> appendGotEntry(const string &symbolName)   = 0 ;
+
+		// return instruction that's the plt entry.
+		virtual Instruction_t* appendPltEntry(const string &symbolName)   = 0 ;
+
+		static unique_ptr<ElfDependencies_t> factory(IRDB_SDK::FileIR_t* firp);
+
+};
+
+
+}
diff --git a/include/inc-transform/transform.hpp b/include/inc-transform/transform.hpp
index c03d815bb3ba0eed0310f6659ada1ea2e2eeed84..1e0b8d8f21d0f31cc300cd093d00ac4edee39a44 100644
--- a/include/inc-transform/transform.hpp
+++ b/include/inc-transform/transform.hpp
@@ -32,7 +32,7 @@ namespace IRDB_SDK
 			void setInstructionAssembly(Instruction_t* instr, const string& p_asm);
 
 
-			virtual FileIR_t* getFileIR();  
+			FileIR_t* getFileIR();  
 
 		private:
 
diff --git a/include/irdb-elfdep b/include/irdb-elfdep
new file mode 100644
index 0000000000000000000000000000000000000000..25024599140d628c591c7e1b6beccb1c4b64d7f3
--- /dev/null
+++ b/include/irdb-elfdep
@@ -0,0 +1,7 @@
+
+#ifndef IRDB_SDK_elfdep
+#define IRDB_SDK_elfdep
+
+#include <inc-elfdep/elfdep.hpp>
+
+#endif