code: def add(self, *a, **ka):
          
          route = a[0] if a and isinstance(a[0], Route) else Route(*a, **ka)
          self.routes.append(route)
          if route.name:
              self.named[route.name] = route.format_str()
          if route.static:
              self.static[route.route] = route.target
              return
          gpatt = route.group_re()
          fpatt = route.flat_re()
          try:
              gregexp = re.compile('^(%s)$' % gpatt) if '(?P' in gpatt else None
              combined = '%s|(^%s$)' % (self.dynamic[-1][0].pattern, fpatt)
              self.dynamic[-1] = (re.compile(combined), self.dynamic[-1][1])
              self.dynamic[-1][1].append((route.target, gregexp))
          except (AssertionError, IndexError), e: # AssertionError: Too many groups
              self.dynamic.append((re.compile('(^%s$)'%fpatt),[(route.target, gregexp)]))
          except re.error, e:
              raise RouteSyntaxError("Could not add Route: %s (%s)" % (route, e))
docs: Adds a route->target pair or a Route object to the Router.
              See Route() for details.