more generalised deegated module