In this talk, we will discuss How a good module look like (Discussion on module boundaries - Reusable code). Properties of good reusable code. Principles that help get the module boundaries right (cohesion principles) Principles to manage dependencies between the modules (coupling principles). Tools that can be used to decouple the code base. (We will be using IntelliJ Idea DSM to visualise the code base dependencies and to break them). Techniques that can help to prevent future issues. We won't be covering all the principles or every aspect of the given principles due to time constrain. Main goal of the talk is to provide actionable points and to have a healthy discussion around the same.