What is Modularity? Modularity is an API which allows the easy use of modular programming. Project (Open source, MIT): https://github.com/Desetude/Modularity Getting Started: https://github.com/Desetude/Modularity/wiki Simple example: https://github.com/Desetude/ModularityExample What is a Modular Programming and why would I want to use it? Modular programming is a way of designing a program that splits it up into different sections, 'modules', each one handling one aspect of the program. I think you should be designing your programs in a modular way for three reasons: Maintainability - If you split up your program into different, isolated modules, the different functions of the programs will not be grouped together and it is much easier to be able to identify the sections of code relating to the function you are looking for. Substitutability - Modules can be easily substited for something else withtout other modules in the program being affected as there is less dependence between the features that are not directly related. Encapsulation - In a non-modular program, the different features may depend on other features' implementation details, whereas in Modular programming, the different modules hide their implementation details from eachother in order to have a high substitutability. How does Modularity help with modular programming? Modularity helps with the registering and injection of modules. For example, to mark a class as a Module, all that needs to be done is for it to be annotated with '@Module' and a name to be given to it, after that a 'ModuleLoader' must be instantied, which loads all the Modules, without any modules having to be specifed as the program's classes are scanned at compile-time for the '@Module' annotation. The modules are then loaded and injected by Guice. Is this relevant at all with Bukkit? I would say that Modular programming is especially important when making Bukkit plugins for servers as most servers have a huge amount of different features that can be hard to maintain without programming in a modular way. Also, I have created a Guice module for Bukkit, which adds a few Bukkit-specific features to Modularity. What do I need to know to be able to use this? To be able to use Modularity, you will need to be quite comfortable with Guice injection, although if you're not, it wont be hard to learn as the documentation is amazing for it at https://github.com/google/guice Alos, Modularity uses Java 8, Java 7 is not supported. Credit The idea for this came from the SKCraft Plume project which is what I based some of the code from, making it much more flexible, documentating it and making it independant of all the other SKCraft features. Any feedback on the API or the post itself would be greatly appreciated.