completed decorator and probably mixin