generalize route addition