adding complex route handling