change from decorator to mixin class

and use classmethods instead of staticmethods