a simple client-side router for SPA