improve routing, still have a lot to do