 	}
 }
 
-extension UInt8: StatementBindable {
-	public func bind(toRawSQLiteStatement stmt: SQLitePreparedStatement, parameter idx: Int32) throws {
+extension UInt8: ParameterBindable {
+	public func bind(to stmt: SQLitePreparedStatement, parameter idx: Int32) throws {
 		guard sqlite3_bind_int64(stmt, idx, Int64(self)) == SQLITE_OK else {
 			#if DEBUG
 				print("Error binding UInt8 \(self) to parameter \(idx): \(String(cString: sqlite3_errmsg(sqlite3_db_handle(stmt))))")

	/// - parameter sql: The SQL statement to execute
	/// - parameter values: A sequence of name/value pairs to bind to named SQL parameters
	/// - throws: `DatabaseError`
	public func execute<S: Sequence, T: StatementBindable>(sql: String, parameters values: S) throws where S.Iterator.Element == (String, T?) {
		let statement = try prepare(sql: sql)
		try statement.bind(parameters: values)
		try statement.execute()

	}
}

extension UInt64: ParameterBindable {
	public func bind(to stmt: SQLitePreparedStatement, parameter idx: Int32) throws {
		guard sqlite3_bind_int64(stmt, idx, Int64(bitPattern: self)) == SQLITE_OK else {
			#if DEBUG
				print("Error binding UInt64 \(self) to parameter \(idx): \(String(cString: sqlite3_errmsg(sqlite3_db_handle(stmt))))")
