Challenging myself into using as much gang of 4 design patterns as I can.