base exch refactor