major refactor to use react-router instead of a hand-rolled router