change to mixin structure