The planning phase, before we write any code, we should know in detail at least how the core should interface with the rest of the project.