diff --git a/scripts/Python/interface/SBModule.i b/scripts/Python/interface/SBModule.i
index cea05e7..6f78dff 100644
--- a/scripts/Python/interface/SBModule.i
+++ b/scripts/Python/interface/SBModule.i
@@ -137,6 +137,13 @@
                    uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
                    bool append, 
                    lldb::SBSymbolContextList& sc_list);
+    
+    lldb::SBType
+    FindFirstType (const char* name);
+
+    lldb::SBTypeList
+    FindTypes (const char* type);
+
 
     %feature("docstring", "
     //------------------------------------------------------------------
diff --git a/scripts/Python/interface/SBTarget.i b/scripts/Python/interface/SBTarget.i
index 3ad6bed..4064620 100644
--- a/scripts/Python/interface/SBTarget.i
+++ b/scripts/Python/interface/SBTarget.i
@@ -320,6 +320,12 @@
                    uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
                    bool append, 
                    lldb::SBSymbolContextList& sc_list);
+    
+    lldb::SBType
+    FindFirstType (const char* type);
+    
+    lldb::SBTypeList
+    FindTypes (const char* type);
 
     %feature("docstring", "
     //------------------------------------------------------------------
diff --git a/scripts/Python/interface/SBType.i b/scripts/Python/interface/SBType.i
index e7d57b4..03cfe44 100644
--- a/scripts/Python/interface/SBType.i
+++ b/scripts/Python/interface/SBType.i
@@ -9,91 +9,63 @@
 
 namespace lldb {
 
-class SBTypeMember;
-
-class SBType
-{
-public:
-
-    SBType (void *ast = NULL, void *clang_type = NULL);
+    class SBType
+    {
+        public:
+                
+        SBType (const SBType &rhs);
+        
+        ~SBType ();
+                
+        bool
+        IsValid() const;
+        
+        size_t
+        GetByteSize() const;
+        
+        bool
+        IsPointerType() const;
+        
+        bool
+        IsReferenceType() const;
+        
+        SBType
+        GetPointerType() const;
+        
+        SBType
+        GetPointeeType() const;
+        
+        SBType
+        GetReferenceType() const;
+        
+        SBType
+        GetDereferencedType() const;
+        
+        SBType
+        GetBasicType(lldb::BasicType type) const;
+        
+        const char*
+        GetName();
+    };
     
-    SBType (const SBType &rhs);
-
-    ~SBType ();
-
-    bool
-    IsValid();
-
-    const char *
-    GetName();
-
-    uint64_t
-    GetByteSize();
-
-    uint64_t
-    GetNumberChildren (bool omit_empty_base_classes);
-
-    bool
-    GetChildAtIndex (bool omit_empty_base_classes, uint32_t idx, SBTypeMember &member);
-
-    uint32_t
-    GetChildIndexForName (bool omit_empty_base_classes, const char *name);
-
-    bool
-    IsAPointerType ();
-
-    SBType
-    GetPointeeType ();
-
-    static bool
-    IsPointerType (void *opaque_type);
-
-    bool
-    GetDescription (lldb::SBStream &description);
-};
-
-class SBTypeMember
-{
-public:
-
-    SBTypeMember ();
-    
-    SBTypeMember (const SBTypeMember &rhs);
-
-    ~SBTypeMember ();
-
-    bool
-    IsBaseClass ();
-
-    bool
-    IsValid ();
-
-    void
-    Clear();
-
-    bool
-    IsBitfield ();
-    
-    size_t
-    GetBitfieldWidth ();
-    
-    size_t
-    GetBitfieldOffset ();
-
-    size_t
-    GetOffset ();
-
-    const char *
-    GetName ();
-
-    SBType
-    GetType();
-
-    SBType
-    GetParentType();
-
-    void
-    SetName (const char *name);
-};
+    class SBTypeList
+    {
+        public:
+        SBTypeList();
+        
+        void
+        AppendType(SBType type);
+        
+        SBType
+        GetTypeAtIndex(int index);
+        
+        int
+        GetSize();
+        
+        ~SBTypeList();
+        
+        private:
+        std::auto_ptr<SBTypeListImpl> m_content;
+    };
 
 } // namespace lldb
diff --git a/scripts/Python/interface/SBValue.i b/scripts/Python/interface/SBValue.i
index 68e97e3..24f9660 100644
--- a/scripts/Python/interface/SBValue.i
+++ b/scripts/Python/interface/SBValue.i
@@ -203,7 +203,22 @@
     GetChildAtIndex (uint32_t idx, 
                      lldb::DynamicValueType use_dynamic,
                      bool can_create_synthetic);
+    
+    lldb::SBValue
+    CreateChildAtOffset (const char *name, uint32_t offset, const SBType& type);
+    
+    lldb::SBValue
+    SBValue::Cast(const SBType& type);
 
+    lldb::SBValue
+    CreateValueFromExpression (const char *name, const char* expression);
+
+    lldb::SBValue
+    CreateValueFromAddress(const char* name, lldb::addr_t address, const SBType& type);
+    
+    lldb::SBType
+    GetType();
+    
     %feature("docstring", "
     //------------------------------------------------------------------
     /// Returns the child member index.
@@ -257,13 +272,27 @@
     void *
     GetOpaqueType();
 
-
     lldb::SBValue
     Dereference ();
 
+    lldb::SBValue
+    AddressOf();
+    
     bool
     TypeIsPointerType ();
+    
+    lldb::SBTarget
+    GetTarget();
 
+    lldb::SBProcess
+    GetProcess();
+    
+    lldb::SBThread
+    GetThread();
+    
+    lldb::SBFrame
+    GetFrame();
+    
     bool
     GetDescription (lldb::SBStream &description);
 
