         }
     }
     
-    
-    // MARK: - Extracting NSData
-    
-    /**
-    Returns the optional NSData stored at index *index*.
-    
-    The returned data does not owns its bytes, and must not be used longer than
-    the row's lifetime.
-    
-    - parameter index: The index of a column.
-    - returns: An optional NSData.
-    */
+    /// Returns the optional `NSData` at given index.
+    ///
+    /// Indexes span from 0 for the leftmost column to (row.count - 1) for the
+    /// righmost column.
+    ///
+    /// The result is nil if the fetched SQLite value is NULL, or if the SQLite
+    /// value is not a blob.
+    ///
+    /// Otherwise, the returned data does not owns its bytes: it must not be
+    /// used longer than the row's lifetime.
+    ///
+    /// - parameter index: A column index.
+    /// - returns: An optional NSData.
     public func dataNoCopy(atIndex index:Int) -> NSData? {
         return impl.dataNoCopy(atIndex: index)
     }
     
-    /**
-    Returns the optional NSData stored at column *name*.
-    
-    The returned data does not owns its bytes, and must not be used longer than
-    the row's lifetime.
-    
-    - parameter name: A column name.
-    - returns: An NSData.
-    */
+    /// Returns the optional `NSData` at given column.
+    ///
+    /// Indexes span from 0 for the leftmost column to (row.count - 1) for the
+    /// righmost column.
+    ///
+    /// The result is nil if the fetched SQLite value is NULL, or if the SQLite
+    /// value is not a blob.
+    ///
+    /// Otherwise, the returned data does not owns its bytes: it must not be
+    /// used longer than the row's lifetime.
+    ///
+    /// - parameter columnName: A column name.
+    /// - returns: An optional NSData.
     public func dataNoCopy(named columnName: String) -> NSData? {
         if let index = impl.indexForColumn(named: columnName) {
             return dataNoCopy(atIndex: index)

        }
    }
    
    /**
    Returns the value for the given column, converted to the requested type.
    
    Expect a crash if the SQLite value is NULL, or can't be converted to the
    requested type.
    
        let value: Bool? = row.value(named: "count")
        let value: Int? = row.value(named: "count")
        let value: Double? = row.value(named: "count")
    
    This method is case-insensitive.
    
    **WARNING**: type casting requires a very careful use of the `as` operator
    (see [rdar://21676393](http://openradar.appspot.com/radar?id=4951414862249984)):
    
        row.value(named: "count") as Int    // OK: Int
        row.value(named: "count") as Int?   // OK: Int?
        row.value(named: "count") as! Int   // NO NO NO DON'T DO THAT!
        row.value(named: "count") as? Int   // NO NO NO DON'T DO THAT!
    
    - parameter columnName: A column name.
    - returns: An optional *Value*.
    */
    public func value<Value: DatabaseValueConvertible>(named columnName: String) -> Value {
        if let index = impl.indexForColumn(named: columnName) {
            return value(atIndex: index)

        }
    }
    
    /// Returns the value of type `Value` at given column.
    ///
    /// Column name is case-insensitive. If the row does not contain the column,
    /// a fatal error is raised.
    ///
    /// The result is nil if the fetched SQLite value is NULL, or if the SQLite
    /// value can not be converted to `Value`.
    ///
    /// Successful conversions include:
    ///
    /// - Numeric SQLite values to Swift numeric types and Bool (zero is the
    ///   only false boolean).
    /// - Text SQLite values to Swift strings.
    /// - Blob SQLite values to NSData.
    ///
    /// Types that adopt DatabaseValueConvertible can provide more conversions.
    ///
    /// - parameter columnName: A column name.
    /// - returns: An optional *Value*.
    public func value<Value: DatabaseValueConvertible>(named columnName: String) -> Value? {
        if let index = impl.indexForColumn(named: columnName) {
            return value(atIndex: index)
