try to move basic patterns into a base class
Having a base class doesn't really help without proper reflection or KVC
support :(