refactors components to use button mixin