 // 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
         //

    }
}

extension Int64: SQLiteValueConvertible {
    public var sqliteValue: SQLiteValue {
        return .Integer(self)
    }
    
    public init?(sqliteValue: SQLiteValue) {
        switch sqliteValue {
        case .Integer(let int64):

    }
}

/// Blob is convertible to and from SQLiteValue.
public struct Blob : SQLiteValueConvertible {
    
    /// The data
    public let data: NSData
    
    /// Create a Blob from NSData. Returns nil if and only if *data* is nil.
    init?(_ data: NSData?) {
        if let data = data {
            self.data = data
