Wouldn't it be enough to have an `OpenExchangeRate` model? It should probably contain both the source and target currency.