             return dic
         }
     }
-    
-    private struct DictionaryRowImpl: RowImpl {
-        let sqliteDictionary: [String: SQLiteValue]
-        
-        init (sqliteDictionary: [String: SQLiteValue]) {
-            self.sqliteDictionary = sqliteDictionary
-        }
-        
-        func sqliteValueAtIndex(index: Int) -> SQLiteValue {
-            return sqliteDictionary[advance(sqliteDictionary.startIndex, index)].1
-        }
-        
-        func indexForColumnNamed(name: String) -> Int? {
-            if let index = sqliteDictionary.indexForKey(name) {
-                return distance(sqliteDictionary.startIndex, index)
-            } else {
-                return nil
-            }
-        }
-    }
 }
+
+public func ==(lhs: Row.RowIndex, rhs: Row.RowIndex) -> Bool {
+    return lhs.index == rhs.index
+}

        }
        return dictionary
    }
    
    // SafeRowImpl can be safely accessed after sqlite3_step() and sqlite3_finalize() has been called.
    // It preserves the column ordering of the statement.

            self.statement = statement
        }
        
        var count: Int {
            return statement.columnCount
        }
        
        func sqliteValueAtIndex(index: Int) -> SQLiteValue {
            return statement.sqliteValueAtIndex(index)
        }
        
        func columnNameAtIndex(index: Int) -> String {
            return statement.columnNames[index]
        }
        
        func indexForColumnNamed(name: String) -> Int? {
