Lightweight client-side routing (currently using hash)