What is IDP and how does it work?