abstract to collectable trait
rename router to route manager
use listing instead of hash
route manager with method helpers