My implementation of various design patterns