Inversion Control Design Pattern