First pass at a refactor of exchange tick