I do think this proposal is better than what we have since it meets the major requirements, but have one minor point of critique: Offering a mixin is not a good enough argument to address the DRY shortcoming. While it may be acceptable in many cases, it is ugly and messes with reporting of errors, debugging, code coverage and profiling.