     
     // TODO: doc
     // TODO: defaults(sql: "CURRENT_TIMESTAMP")
-    // TODO: _SQLExpressible or DatabaseValueConvertible?
-    public func defaults(value: _SQLExpressible) {
-        defaultExpression = value.sqlExpression
+    public func defaults(value: DatabaseValueConvertible) {
+        defaultValue = value
     }
     
     // TODO: doc

    var notNullConflictResolution: SQLConflictResolution?
    var uniqueConflictResolution: SQLConflictResolution?
    var checkExpression: _SQLExpression?
    var defaultExpression: _SQLExpression?
    var collationName: String?
    var reference: (table: String, column: String?, deleteAction: SQLForeignKeyAction?, updateAction: SQLForeignKeyAction?, deferred: Bool)?
    

            chunks.append("(" + checkExpression.sql(&arguments) + ")")
        }
        
        if let defaultValue = defaultValue {
            var arguments: StatementArguments? = nil // nil so that defaultValue.sqlExpression.sql(&arguments) embeds literals
            chunks.append("DEFAULT")
            chunks.append("(" + defaultValue.sqlExpression.sql(&arguments) + ")")
        }
        
        if let collationName = collationName {
