Design Patterns and Priniciples