re-invent IOC container