_method also must support user defined router