Understanding Inversion of Control