base route using callback