Implementations of various design patterns