converted composition to use metaclass