Because Click’s router components are generally very small and functionally simple, much of the actual component source code deals with the Click-specific component framework and not with the functional purpose of the components. For this reason, we decided to write our components from scratch rather than adapt the existing Click components to Knit.