When to use @⁠extend; when to use a mixin