Better design pattern