Describe the SOLID design principles and how you have applied them to make a mobile codebase more modular.