diff --git a/shodan_infrastructure/KelvinCPU.cs b/shodan_infrastructure/KelvinCPU.cs
index 81c2f32..9f338c1 100644
--- a/shodan_infrastructure/KelvinCPU.cs
+++ b/shodan_infrastructure/KelvinCPU.cs
@@ -474,11 +474,29 @@
         private IntPtr reg_info_ptr { get; set; }
         private IntPtr string_ptr { get; set; }
 
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        public delegate Int32 ConstructWithMemory(Int32 param0, UInt64 param1, UInt64 param2, IntPtr param3);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        public delegate Int32 FuncInt32Int32(Int32 param0);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        public delegate Int32 GetRegInfo(Int32 param0, Int32 param1, IntPtr param2, IntPtr param3);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        public delegate UInt64 Step(Int32 param0, UInt64 param1, IntPtr param2);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        public delegate Int32 ReadRegister(Int32 param0, UInt32 param1, IntPtr param2);
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        public delegate Int32 WriteRegister(Int32 param0, Int32 param1, UInt64 param2);
+
         // Functions from cpuLibrary
         [Import(UseExceptionWrapper = false)]
         // Int32(Int32 max_string_lenth, UInt64 mem_block_size,
         //       UInt64 mem_size, uint8_t ** mem_block_ptr_list);
-        private FuncInt32Int32UInt64UInt64IntPtr construct_with_memory;
+        private ConstructWithMemory construct_with_memory;
         [Import(UseExceptionWrapper = false)]
         // Int32(Int32 id);
         private FuncInt32Int32 destruct;
@@ -490,16 +508,16 @@
         private FuncInt32Int32 get_reg_info_size;
         [Import(UseExceptionWrapper = false)]
         // Int32(Int32 id, Int32 index, char *name, IntPtr *info);
-        private FuncInt32Int32Int32IntPtrIntPtr get_reg_info;
+        private GetRegInfo get_reg_info;
         [Import(UseExceptionWrapper = false)]
         // UInt64(Int32 id, UInt64 step, IntPtr *status);
-        private FuncUInt64Int32UInt64IntPtr step;
+        private Step step;
         [Import(UseExceptionWrapper = false)]
         // Int32(Int32 id, UInt32 reg_id, IntPtr *value);
-        private FuncInt32Int32UInt32IntPtr read_register;
+        private ReadRegister read_register;
         [Import(UseExceptionWrapper = false)]
         // Int32(Int32 id, Int32 reg_id, UInt64 value);
-        private FuncInt32Int32Int32UInt64 write_register;
+        private WriteRegister write_register;
 
         // Register access.
         private Dictionary<Int32, CPURegister> registerMap = new Dictionary<Int32, CPURegister>();
diff --git a/shodan_infrastructure/MpactCPU.cs b/shodan_infrastructure/MpactCPU.cs
index ebc82e1..098f4ec 100644
--- a/shodan_infrastructure/MpactCPU.cs
+++ b/shodan_infrastructure/MpactCPU.cs
@@ -201,9 +201,9 @@
             // Instantiate the simulator, passing in callbacks to read and write
             // from/to the system bus.
             read_sysmem_delegate =
-                    new FuncInt32UInt64IntPtrInt32(ReadSysMemory);
+                    new FuncInt32UInt64IntPtrInt32_(ReadSysMemory);
             write_sysmem_delegate =
-                    new FuncInt32UInt64IntPtrInt32(WriteSysMemory);
+                    new FuncInt32UInt64IntPtrInt32_(WriteSysMemory);
             mpact_id = construct_with_sysbus(cpu_type, maxStringLen,
                                              read_sysmem_delegate,
                                              write_sysmem_delegate);
@@ -601,14 +601,38 @@
 
     // Declare some additional function signatures.
     [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 WriteRegister(Int32 param0, Int32 param1, UInt64 param2);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 ReadRegister(Int32 param0, Int32 param1, IntPtr param2);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 MemoryAccess(Int32 param0, UInt64 param1, IntPtr param2, Int32 param3);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate UInt64 Step(Int32 param0, UInt64 param1, IntPtr param2);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 LoadImage(Int32 param0, String param1, UInt64 param2);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 GetRegInfoSize(Int32 param0);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 GetRegInfo(Int32 param0, Int32 param1, IntPtr param2, IntPtr param3);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate Int32 FuncInt32UInt64IntPtrInt32_(UInt64 param0, IntPtr param1, Int32 param2);
+
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public delegate Int32 ConnectWithSysbus(string param0, Int32 param1, Int32 param2,
-                                            FuncInt32UInt64IntPtrInt32 param3,
-                                            FuncInt32UInt64IntPtrInt32 param4);
+                                            FuncInt32UInt64IntPtrInt32_ param3,
+                                            FuncInt32UInt64IntPtrInt32_ param4);
 
     [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public delegate Int32 ConstructWithSysbus(string param0, Int32 param1,
-                                              FuncInt32UInt64IntPtrInt32 param2,
-                                              FuncInt32UInt64IntPtrInt32 param3);
+                                              FuncInt32UInt64IntPtrInt32_ param2,
+                                              FuncInt32UInt64IntPtrInt32_ param3);
 
     [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
     public delegate Int32 SetConfig(Int32 param0, string[] param1,
@@ -621,10 +645,13 @@
     public delegate UInt64 LoadElf(Int32 param0, string param1, bool param2,
                                    IntPtr param3);
 
+    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+    public delegate void ActionInt32_(Int32 param0);
+
     // Int32 read_sysmem_delegate(UInt64 address, IntPtr buffer, Int32 size)
-    private FuncInt32UInt64IntPtrInt32 read_sysmem_delegate;
+    private FuncInt32UInt64IntPtrInt32_ read_sysmem_delegate;
     // Int32 write_sysmem_delegate(UInt64 address, IntPtr buffer, Int32 size)
-    private FuncInt32UInt64IntPtrInt32 write_sysmem_delegate;
+    private FuncInt32UInt64IntPtrInt32_ write_sysmem_delegate;
 
     // Functions that are imported from the mpact sim library.
 #pragma warning disable 649
@@ -642,19 +669,19 @@
 
     [Import(UseExceptionWrapper = false)]
     // void destruct(Int32 id);
-    private ActionInt32 destruct;
+    private ActionInt32_ destruct;
 
     [Import(UseExceptionWrapper = false)]
     // void reset(Int32 id);
-    private ActionInt32 reset;
+    private ActionInt32_ reset;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 get_reg_info_size(Int32 id)
-    private FuncInt32Int32 get_reg_info_size;
+    private GetRegInfoSize get_reg_info_size;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 get_reg_info(Int32 id, IntPtr *name, IntPtr *struct);
-    private FuncInt32Int32Int32IntPtrIntPtr get_reg_info;
+    private GetRegInfo get_reg_info;
 
     [Import(UseExceptionWrapper = false)]
     // UInt64 load_elf(Int32 id, String file_name,
@@ -663,27 +690,27 @@
 
     [Import(UseExceptionWrapper = false)]
     // Int32 load_image(Int32 id, String file_name, UInt64 address);
-    private FuncInt32Int32StringUInt64 load_image;
+    private LoadImage load_image;
 
     [Import(UseExceptionWrapper = false)]
     // UInt64 step(Int32 id, UInt64 step, IntPtr *error);
-    private FuncUInt64Int32UInt64IntPtr step;
+    private Step step;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 read_register(Int32 id, Int32 reg_id, IntPtr *value);
-    private FuncInt32Int32Int32IntPtr read_register;
+    private ReadRegister read_register;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 write_register(Int32 id, Int32 reg_id, UInt64 value);
-    private FuncInt32Int32Int32UInt64 write_register;
+    private WriteRegister write_register;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 read_memory(Int32 id, UInt64 address, IntPtr buffer, Int32 size);
-    private FuncInt32Int32UInt64IntPtrInt32 read_memory;
+    private MemoryAccess read_memory;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 write_memory(Int32 id, UInt64 address, IntPtr buffer, Int32 size);
-    private FuncInt32Int32UInt64IntPtrInt32 write_memory;
+    private MemoryAccess write_memory;
 
     [Import(UseExceptionWrapper = false)]
     // Int32 set_config(Int32 id, string[] names string[] values, Int32 size);
