     var date: NSDate { get }
 }
 
-protocol FXResultType {
+// MARK: - Protocol: Transaction Type
+
+protocol FXTransactionType {
     typealias Money: MoneyType
     var money: Money { get }
 
     init(money: Money)
-}
-
-protocol FXExchangeType {
-    typealias RequestType
-
-    /**
-     Exchange money into other money.
-
-     - parameter completion: A completion block which receives
-     the output.
-     */
-    func exchange<M: MoneyType, Result: FXResultType where M.DecimalStorageType == BankersDecimal.DecimalStorageType, M.DecimalStorageType == Result.Money.DecimalStorageType>(money: M, completion: Result -> Void) -> RequestType
 }
 
 /**

    let date: NSDate
}

struct FXResult<M: MoneyType>: FXResultType {
    let money: M

    init(money: M) {

//

import Foundation
import Result

// MARK: - Protocol: Quote Type

protocol FXQuoteType {
    var ticker: String { get }
