add better route handling