rename Router to RouterConstraint
split initializer into multiple methods