better route handling