write design patterns