add design patterns