Looking more below, this could probably even just be done with a base class.