 
 // MARK: - Protocol: Transaction Type
 
-protocol FXTransactionType {
+public protocol FXTransactionType {
     typealias Provider: FXProviderType
     typealias Money: MoneyType
 

 In addition to FX exchanges, a provide will have its 
 own characteristics, such as a name and fee structure.
*/
protocol FXProviderType {

    typealias RequestType
    typealias QuoteType: FXQuoteType


    // MARK: - Yahoo

    public struct Yahoo: FXProviderType {

        public typealias RequestType = NSURLSessionDataTask
        public typealias QuoteType = FXQuote

        public static var URLSession: NSURLSession {
            return NSURLSession.sharedSession()
        }

        public static let name = "Yahoo"

        public static func requestForBaseCurrencyCode(base: String, symbol: String) -> NSURLRequest {
            return NSURLRequest(URL: NSURL(string: "http://download.finance.yahoo.com/d/quotes.csv?s=\(base)\(symbol)=X&f=nl1d1t1")!)
        }

        public static func quoteFromNetworkResult(result: Result<(NSData?, NSURLResponse?), NSError>) -> Result<QuoteType, FX.Error> {
            return result.analysis(

                ifSuccess: { data, response in
