Playing with GOF design patterns