diff --git a/scripts/Python/interface/SBData.i b/scripts/Python/interface/SBData.i
index 416afb6..4e87e6e 100644
--- a/scripts/Python/interface/SBData.i
+++ b/scripts/Python/interface/SBData.i
@@ -14,80 +14,80 @@
 {
 public:
 
-	    SBData ();
+    SBData ();
 
-	    SBData (const SBData &rhs);
+    SBData (const SBData &rhs);
 
-	    ~SBData ();
+    ~SBData ();
 
-	    uint8_t
-	    GetAddressByteSize ();
+    uint8_t
+    GetAddressByteSize ();
 
-	    void
-	    Clear ();
+    void
+    Clear ();
 
-	    bool
-	    IsValid();
+    bool
+    IsValid();
 
-	    size_t
-	    GetByteSize ();
+    size_t
+    GetByteSize ();
 
-	    lldb::ByteOrder
-	    GetByteOrder();
+    lldb::ByteOrder
+    GetByteOrder();
 
-	    float
-	    GetFloat (lldb::SBError& error, uint32_t offset);
+    float
+    GetFloat (lldb::SBError& error, uint32_t offset);
 
-	    double
-	    GetDouble (lldb::SBError& error, uint32_t offset);
+    double
+    GetDouble (lldb::SBError& error, uint32_t offset);
 
-	    long double
-	    GetLongDouble (lldb::SBError& error, uint32_t offset);
+    long double
+    GetLongDouble (lldb::SBError& error, uint32_t offset);
 
-	    lldb::addr_t
-	    GetAddress (lldb::SBError& error, uint32_t offset);
+    lldb::addr_t
+    GetAddress (lldb::SBError& error, uint32_t offset);
 
-	    uint8_t
-	    GetUnsignedInt8 (lldb::SBError& error, uint32_t offset);
+    uint8_t
+    GetUnsignedInt8 (lldb::SBError& error, uint32_t offset);
 
-	    uint16_t
-	    GetUnsignedInt16 (lldb::SBError& error, uint32_t offset);
+    uint16_t
+    GetUnsignedInt16 (lldb::SBError& error, uint32_t offset);
 
-	    uint32_t
-	    GetUnsignedInt32 (lldb::SBError& error, uint32_t offset);
+    uint32_t
+    GetUnsignedInt32 (lldb::SBError& error, uint32_t offset);
 
-	    uint64_t
-	    GetUnsignedInt64 (lldb::SBError& error, uint32_t offset);
+    uint64_t
+    GetUnsignedInt64 (lldb::SBError& error, uint32_t offset);
 
-	    int8_t
-	    GetSignedInt8 (lldb::SBError& error, uint32_t offset);
+    int8_t
+    GetSignedInt8 (lldb::SBError& error, uint32_t offset);
 
-	    int16_t
-	    GetSignedInt16 (lldb::SBError& error, uint32_t offset);
+    int16_t
+    GetSignedInt16 (lldb::SBError& error, uint32_t offset);
 
-	    int32_t
-	    GetSignedInt32 (lldb::SBError& error, uint32_t offset);
+    int32_t
+    GetSignedInt32 (lldb::SBError& error, uint32_t offset);
 
-	    int64_t
-	    GetSignedInt64 (lldb::SBError& error, uint32_t offset);
+    int64_t
+    GetSignedInt64 (lldb::SBError& error, uint32_t offset);
 
-	    const char*
-	    GetString (lldb::SBError& error, uint32_t offset);
-	
-		bool
-    	GetDescription (lldb::SBStream &description);
+    const char*
+    GetString (lldb::SBError& error, uint32_t offset);
 
-	    size_t
-	    ReadRawData (lldb::SBError& error,
-	                 uint32_t offset,
-	                 void *buf,
-	                 size_t size);
+    bool
+    GetDescription (lldb::SBStream &description);
 
-	    void
-	    SetData(lldb::SBError& error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size);
+    size_t
+    ReadRawData (lldb::SBError& error,
+                 uint32_t offset,
+                 void *buf,
+                 size_t size);
 
-	    bool
-	    Append(const SBData& rhs);
+    void
+    SetData(lldb::SBError& error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size);
+
+    bool
+    Append(const SBData& rhs);
 
 
 };
