add DiContext (serve) and DiConsumer (client) mixins to make the code reusable
custom main is necessary to make the di transformer work