implement better routing ( maybe)