use exchange_with and get_rate from VariableExchange