add more test coverage
add strict checks for hashable.format() to support router()