 
     // MARK: - Yahoo
 
-    struct Yahoo: FXProviderType {
-
-        typealias RequestType = NSURLSessionDataTask
-        typealias QuoteType = FXQuote
-
-        static var URLSession: NSURLSession {
+    public struct Yahoo: FXProviderType {
+
+        public typealias RequestType = NSURLSessionDataTask
+        public typealias QuoteType = FXQuote
+
+        public static var URLSession: NSURLSession {
             return NSURLSession.sharedSession()
         }
 
-        static let name = "Yahoo"
-
-        static func requestForBaseCurrencyCode(base: String, symbol: String) -> NSURLRequest {
+        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")!)
         }
 
-        static func quoteFromNetworkResult(result: Result<(NSData?, NSURLResponse?), NSError>) -> Result<QuoteType, FX.Error> {
+        public static func quoteFromNetworkResult(result: Result<(NSData?, NSURLResponse?), NSError>) -> Result<QuoteType, FX.Error> {
             return result.analysis(
 
                 ifSuccess: { data, response in

 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: - Protocol: Transaction Type

public protocol FXTransactionType {
    typealias Provider: FXProviderType
    typealias Money: MoneyType

