refactor
expose exchange and grant