The AgentRouter contract sets its currencyToken state variable only once in the constructor by reading from the AgentFactory:
However, the AgentFactory allows the owner to update the currencyToken through the setCurrencyToken() function. If the factorys currencyToken is changed, the AgentRouter will still reference the old token address, causing its core swap functionality to break.
Solution: 
Consider either having the AgentRouter query the AgentFactory directly to work out which currencyToken to use, or alternatively remove the setCurrencyToken() factory and instead deploy a new factory/router pair in the event that the currency token needs to be changed.
