added all SOLID principles