 		
 		// MARK: - Inits
 		
-		init?(databaseName: String) {
+		public init?(databaseName: String) {
 			// Ensure database file is copied into documents folder.
 			let databaseFile = "\(databaseName).\(Client.SqliteExtension)"
 			guard let databaseUrl = FileManager.urlByAppending(

			return operation
		}
		
		func resetOperationQueue() {
			_asyncQueryQueue.cancelAllOperations()
		}
		
		func deleteDatabase() {
			closeConnection()
			
			// Delete the database file.

			openConnection()
		}
		
		public func beginTransaction() throws {
			if (sqlite3_exec(database, "BEGIN TRANSACTION", nil, nil, nil) != SQLITE_OK) {
				throw Errors.execFailed("Error beginning transaction: \(String(cString: sqlite3_errmsg(database)))")
			}
		}
		
		public func commitTransaction() throws {
			if (sqlite3_exec(database, "COMMIT TRANSACTION", nil, nil, nil) != SQLITE_OK) {
				throw Errors.execFailed("Error committing transaction: \(String(cString: sqlite3_errmsg(database)))")
			}
		}
		
		public func rollbackTransaction() throws {
			if (sqlite3_exec(database, "ROLLBACK TRANSACTION", nil, nil, nil) != SQLITE_OK) {
				throw Errors.execFailed("Error committing transaction: \(String(cString: sqlite3_errmsg(database)))")
			}
		}
		
		public func query<T>(from table: Table<T>, _ query: String, cache: Bool) -> [T] {
			var results: [T]?
			
			do {
