using class decorators in place of metaclasses