Design In this chapter, we discuss how we designed the library taking into account the core concepts while allowing code reuse and extensibility.