diff --git a/source/Target/StackFrame.cpp b/source/Target/StackFrame.cpp
index 666bc1d..2ce69f8 100644
--- a/source/Target/StackFrame.cpp
+++ b/source/Target/StackFrame.cpp
@@ -95,7 +95,7 @@
     
     if (reg_context_sp && !m_sc.target_sp)
     {
-        m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().GetSP();
+        m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().shared_from_this();
         m_flags.Set (eSymbolContextTarget);
     }
 }
@@ -129,16 +129,16 @@
     
     if (m_sc.target_sp.get() == NULL && reg_context_sp)
     {
-        m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().GetSP();
+        m_sc.target_sp = reg_context_sp->GetThread().GetProcess().GetTarget().shared_from_this();
         m_flags.Set (eSymbolContextTarget);
     }
     
-    Module *pc_module = pc_addr.GetModule();
+    Module *pc_module = pc_addr.GetModulePtr();
     if (m_sc.module_sp.get() == NULL || m_sc.module_sp.get() != pc_module)
     {
         if (pc_module)
         {
-            m_sc.module_sp = pc_module;
+            m_sc.module_sp = pc_module->shared_from_this();
             m_flags.Set (eSymbolContextModule);
         }
         else
@@ -218,7 +218,7 @@
                 Module *module = section->GetModule();
                 if (module)
                 {
-                    m_sc.module_sp = module;
+                    m_sc.module_sp = module->shared_from_this();
                     if (m_sc.module_sp)
                         m_flags.Set(eSymbolContextModule);
                 }
@@ -417,7 +417,7 @@
         // If the target was requested add that:
         if (m_sc.target_sp.get() == NULL)
         {
-            m_sc.target_sp = CalculateProcess()->GetTarget().GetSP();
+            m_sc.target_sp = CalculateProcess()->GetTarget().shared_from_this();
             if (m_sc.target_sp)
                 resolved |= eSymbolContextTarget;
         }
@@ -1245,16 +1245,6 @@
     return false;
 }
 
-StackFrameSP
-StackFrame::GetSP ()
-{
-    // This object contains an instrusive ref count base class so we can
-    // easily make a shared pointer to this object
-    return StackFrameSP (this);
-}
-
-
-
 bool
 StackFrame::GetStatus (Stream& strm,
                        bool show_frame_info,
