A maze and an abstract factory