anchor.diff:  
   For example, the `Logic` component (see the class diagram given below) defines it's API in the `Logic.java` interface and exposes its functionality using the `LogicManager.java` class.
   
  +.Class Diagram of the Logic Component
   image::LogicClassDiagram.png[width="800"]
  -_Figure 2.1.2 : Class Diagram of the Logic Component_
   
   [discrete]
   ==== Events-Driven nature of the design
   
   The _Sequence Diagram_ below shows how the components interact for the scenario where the user issues the command `delete 1`.
   
  +.Component interactions for `delete 1` command (part 1)
   image::SDforDeletePerson.png[width="800"]
  -_Figure 2.1.3a : Component interactions for `delete 1` command (part 1)_
   
   [NOTE]
   Note how the `Model` simply raises a `AddressBookChangedEvent` when the Address Book data are changed, instead of asking the `Storage` to save the updates to the hard disk.
   
   The diagram below shows how the `EventsCenter` reacts to that event, which eventually results in the updates being saved to the hard disk and the status bar of the UI being updated to reflect the 'Last Updated' time.
   
  +.Component interactions for `delete 1` command (part 2)
   image::SDforDeletePersonEventHandling.png[width="800"]
  -_Figure 2.1.3b : Component interactions for `delete 1` command (part 2)_
   
   [NOTE]
   Note how the event is propagated through the `EventsCenter` to the `Storage` and `UI` without `Model` having to be coupled to either of them. This is an example of how this Event Driven approach helps us reduce direct coupling between components.
  
positive.code: 
  Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete 1")` API call.
  
  image::DeletePersonSdForLogic.png[width="800"]
  _Figure 2.3.1 : Interactions Inside the Logic Component for the `delete 1` Command_
  
  [[Design-Model]]
  === Model component
  
  image::ModelClassDiagram.png[width="800"]
  _Figure 2.4.1 : Structure of the Model Component_
  
  *API* : link:{repoURL}/src/main/java/seedu/address/model/Model.java[`Model.java`]
  
  
negative.code: [[Design-Logic]]
  === Logic component
  
  [[fig-LogicClassDiagram]]
  .Structure of the Logic Component
  image::LogicClassDiagram.png[width="800"]
  
  .Structure of Commands in the Logic Component. This diagram shows finer details concerning `XYZCommand` and `Command` in <<fig-LogicClassDiagram>>
  image::LogicCommandClassDiagram.png[width="800"]
  
  *API* :
  link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`]
  