 // THE SOFTWARE.
 
 
+/**
+The protocol for values that can be stored and extracted from SQLite databases.
+*/
 public protocol SQLiteValueConvertible {
+    /// Returns a SQLite value that can be stored in the database.
     var sqliteValue: SQLiteValue { get }
+    
+    /// Create an instance initialized to `sqliteValue`.
     init?(sqliteValue: SQLiteValue)
 }
 
+/// Bool is convertible to and from SQLiteValue.
 extension Bool: SQLiteValueConvertible {
+    
+    /// Returns a SQLite value that can be stored in the database.
     public var sqliteValue: SQLiteValue {
         return .Integer(self ? 1 : 0)
     }
     
+    /// Create an instance initialized to `sqliteValue`.
     public init?(sqliteValue: SQLiteValue) {
         // https://www.sqlite.org/lang_expr.html#booleanexpr
         //

            return nil
        }
    }

    public var sqliteValue: SQLiteValue {
        return .Blob(self)
    }
    
    public init?(sqliteValue: SQLiteValue) {
        switch sqliteValue {
        case .Blob(let blob):

    }
}

/// Double is convertible to and from SQLiteValue.
extension Double: SQLiteValueConvertible {
    
    /// Returns Returns a SQLite value that can be stored in the database..
    public var sqliteValue: SQLiteValue {
        return .Real(self)
    }
    
    /// Create an instance initialized to `sqliteValue`.
    public init?(sqliteValue: SQLiteValue) {
        switch sqliteValue {
        case .Integer(let int64):
