 		
 		// Check the return status and throw an error if appropriate.
 		guard status != errSecItemNotFound else {
-			throw KeychainError.itemNotFound(service: service, account: account)
+			throw Keychain.Error.itemNotFound(service: service, account: account)
 		}
 		guard status == noErr else {
-			throw KeychainError.readFailure(status: status)
+			throw Keychain.Error.readFailure(status: status)
 		}
 		
 		// Parse the data from the query result.
 		guard let existingItem = queryResult as? [String : AnyObject], let data = existingItem[kSecValueData as String] as? Data else {
-			throw KeychainError.itemHasNoData(service: service, account: account)
+			throw Keychain.Error.itemHasNoData(service: service, account: account)
 		}
 		
 		return data
 	}
 	
-	static func delete(service: String, account: String) throws {
+	public static func delete(service: String, account: String) throws {
 		
 		// Delete the existing item from the keychain.
 		let query = buildQuery(service: service, account: account)

			
			// Throw an error if an unexpected status was returned.
			guard status == noErr else {
				throw KeychainError.writeFailure(status: status)
			}
		}
		catch KeychainError.itemNotFound {

			
			// Throw an error if an unexpected status was returned.
			guard status == noErr else {
				throw Keychain.Error.writeFailure(status: status)
			}
		}
	}
	
	public static func read(service: String, account: String) throws -> Data  {
		
		// Build a query to find the item that matches the service and account
		var query = buildQuery(service: service, account: account)
