to metaclass or not to metaclass. that is the question