Rather than having three separate breakpoint mixins (breakpoint-min, breakpoint-max, breakpoint-range), would it make more sense to consolidate them into one breakpoint mixin, with an initial argument of min, max, or range (e.g. breakpoint(min, xl))? It would be a more DRY approach, but error handling would get a bit thorny.