Basic classes to use as a starting point when implementing common design patterns