make duplicate-checking logic w/i controllers DRY by moving to mixin