GoF design pattern implementations