Added SOLID principles