button: fix mixin so that its more flexible and removed the type variable