https://github.com/floehopper/metaclass
