There's a breaking change here...you removed the ivars and attributes from the base class but only moved the ivars here.  If a formatter uses the attributes rather than the ivars (which would be wise in general -- ivars feel more "private" to me), it'll be broken since this mixin doesn't provide those attributes.  You should add them back.