         return selectStatement(type, primaryKey: primaryKey).fetchOne(type)
     }
     
-    // let person = db.fetchOne(Person.self, key: ...)
+    /**
+    Fetches a single RowModel given a key.
+
+        let person = db.fetchOne(Person.self, key: ["name": Arthur"])
+
+    - parameter type: The type of fetched row model. It must be a subclass of
+                      RowModel.
+    - parameter key:  A dictionary of value.
+    - returns: An optional row model.
+    */
     public func fetchOne<RowModel: GRDB.RowModel>(type: RowModel.Type, key dictionary: [String: DatabaseValueConvertible?]?) -> RowModel? {
         guard let dictionary = dictionary else {
             return nil

        case Columns([String])
    }
    
    /// A table used by the insert, update, save, delete and reload methods.
    public struct Table {
        /// The table name
        public let name: String
        
        /// The primary key
        public let primaryKey: PrimaryKey?
        
        /// Creates a Table given its name and primary key (default nil)
        public init(named name: String, primaryKey: PrimaryKey? = nil) {
            self.name = name
            self.primaryKey = primaryKey

        // without any custom initializer.
    }
    
    /**
    Initializes a RowModel from a row.
    
    This initializer is used for all fetched models.
    
    The returned RowModel is flagged as *not edited* if and only if the row
    contains all columns of storedDatabaseDictionary.
    
    - parameter row: A Row
    */
    required public init(row: Row) {
        // IMPLEMENTATION NOTE
        //
