Use with_metaclass