complete tutorial; add more advanced routing