What are the core set of components we need? Especially think of which middleware would be important to codify as components