Experimenting with different design patterns