This document outlines an exercise for practicing software design principles through refactoring racing car kata code. Participants will work in pairs, writing tests and refactoring code to address violations of SOLID principles. The principles - single responsibility, open/closed, Liskov substitution, interface segregation, and dependency inversion - are defined. Examples are given of how to apply each principle when refactoring code. The goal is to practice design skills by exploring problems, discussing solutions, and sharing learning with others.