add route generator and test