depend on six to use metaclass