Task input/output models

This has now evolved into this thread